XcodeSwift。如何以编程方式 select 基于视图的 NSTableView 中的单元格

Xcode Swift. How to programmatically select Cell in view-based NSTableView

我可以单击单元格并编辑其内容。但是,除了 click/selecting 一个单元格之外,还可以通过编程方式 select 一个单元格 - 基本上让单元格焦点准备好进行编辑。

Whosebug 上有人问了关于 UITableView 的相同问题,给出的答案是:-

let indexPath = NSIndexPath(forRow: 2, inSection: 0)
tableView.selectRowAtIndexPath(indexPath, animated: true, scrollPosition: .Middle)

selectRowAtIndexPath select 是一个单元格吗?无论如何,我的 NSTableView 似乎没有 .selectRowAtIndexPath(... 方法。

请给我指出一个资源,我可以从中着手解决剩下的问题。

我在谷歌上搜索了两天,然后才在这里问这个问题。但是现在几乎在发布问题后我就设法让它工作了。 事实上,它是如此简单,我不敢相信花了这么长时间才弄明白。

// Assuming we want to programmatically select Column 4, Row 5
myTableView?.editColumn(4, row: 5, withEvent: nil, select: true)

在我的旅途中,我发现很多人问这个问题,但没有简单的答案。或者实际使用 NSTableView 而不是 UITableView 以及 tableView 是 'view based' 而不是基于单元格的答案。所以我希望我在这里发布这篇文章会对其中一些人有所帮助。

Use 可以使用这个,如果你只是想突出显示 table 视图单元格或行,并通过 tableViewSelectionDidChange 对其执行一些操作NSTablView 的委托方法。

mytableView.selectRowIndexes(IndexSet([indexOfTheCellWantToSelect]), byExtendingSelection: true)

我觉得这很干净...作为单元格的扩展

extension NSTableViewCell
{
    func select()
    {
        guard let row = self.tableView?.row(for: self) else { return }

        self.tableView?.selectRowIndexes(IndexSet([row]), byExtendingSelection: false)
    }
}