Swift和NSTableView - 只需选择一行即可

Isa*_*iah 5 xcode select row nstableview swift

我想以编程方式在我的NSTableView中选择一行,只有一列.

func selectColumnIndexes(_ indexes: NSIndexSet!,
    byExtendingSelection extend: Bool)
Run Code Online (Sandbox Code Playgroud)

我一直在玩这个,但我不知道如何写"选择行#2".
我必须从连接到@IBOutlet表视图的变量开始吗?我必须以某种方式表明它与我的NSTableView有关.

谢谢!

cur*_*urt 9

@Isaiah在Swift 3.0中的回答:

.selectRowIndexes(NSIndexSet(index: 0) as IndexSet, byExtendingSelection: false)
Run Code Online (Sandbox Code Playgroud)


Isa*_*iah 7

好的,我知道了.原来是

@IBOutlet weak var NoteTableView: NSTableView!
NoteTableView.selectRowIndexes(NSIndexSet(index: 0), byExtendingSelection: false)
Run Code Online (Sandbox Code Playgroud)

我无法弄明白这一部分NSIndexSet.我正在摆弄init(),结果证明是不必要的.


Cha*_*tas 5

Swift 4解决方案

我创建了一个扩展,以便更容易做到这一点.此外,如果您在表视图单元格上实现了单击操作,那么它也会调用它

extension NSTableView {
    func selectRow(at index: Int) {
        selectRowIndexes(.init(integer: index), byExtendingSelection: false)
        if let action = action {
            perform(action)
        }
    }
}

/// USAGE:
NSTableView().selectRow(at: 0)
Run Code Online (Sandbox Code Playgroud)