【发布时间】:2018-07-29 19:12:46
【问题描述】:
我正在尝试将编辑单元格文本功能添加到基于视图的 NSTableView。我有一个具有name 属性的数据模型,我使用该类的数组作为myTableView 的数据源。要添加编辑功能,我已经实现了 controlTextDidEndEditing 方法,如下所示 -
override func controlTextDidEndEditing(_ obj: Notification)
{
guard let newName = (obj.object as? NSTextField)?.stringValue else {
return
}
//Added for debugging purpose
print(myTableView.selectedRow)
//Update text value of the array item at selectedRow
project[myTableView.selectedRow].name = newName
}
这里的问题是 - 只要我运行我的应用程序并加载 myTableView,controlTextDidEndEditing 就会被解雇。由于最初没有选择,print(myTableView.selectedRow) 语句返回-1。
当我尝试获取当前选定的单元格文本时,我收到此异常 Cannot pass a negative value for 'index',因为 selectedRow 最初是 -1。
为什么在NSTableView 加载时会调用此方法?在基于NSTableView 的视图中具有编辑文本功能的最佳方式是什么?我想要实现的是一种在编辑结束时收到通知的方法,以便我可以在后端更新我的对象。我也尝试了NSNotificationCenter.addObserver 方法,但遇到了同样的问题。
【问题讨论】:
标签: swift macos cocoa nstableview