OS X 应用中的 NSTableView 选择
NSTableView selection in OS X app
所以我正在尝试学习如何编写一个简单的 OS X 应用程序,但我有点困惑。
我得到了这个 table 视图 - 将它连接到阵列控制器等已经很奇怪了。
它工作正常 - 目前,但我想在用户点击特定行时触发特定操作。
我在 Whosebug 上找到了关于 shouldSelectRow 方法的信息,但它似乎无法正常工作。
func tableView(tableView: NSTableView, shouldSelectRow row: Int) -> Bool {
switch tableView.identifier! {
case "SetsTable":
print("Selected row:", row)
print("Objects after selection:", self.arrayController.selectedObjects)
self.appsTableView.reloadData()
return true
default:
return true
}
}
它在第一个 print 语句中显示正确的行,但是当涉及到第二个时,它似乎从完全不同的行中选择对象(如果我只有一行中有对象,它会显示一个空数组)
有谁知道这里的问题是什么以及如何正确显示所选行的对象?
是不是shouldSelectRow的问题?
当我在这个函数之外使用 self.arrayController.selectedObjects 时(例如,选择了该行,然后我点击了一个按钮调用以打印出 selectedObjects),它会正确显示。
名称中带有 'should' 的方法在其发生之前被调用,带有 'did' 的方法在其发生之后被调用。
tableView:shouldSelectRow:
在选择更改之前调用,因此委托可以拒绝新选择。
tableViewSelectionDidChange:
在选择更改后调用。 arrayController.selectedObjects
将是新的选择。
如果您想了解更多:Table View Programming Guide
所以我正在尝试学习如何编写一个简单的 OS X 应用程序,但我有点困惑。
我得到了这个 table 视图 - 将它连接到阵列控制器等已经很奇怪了。
它工作正常 - 目前,但我想在用户点击特定行时触发特定操作。
我在 Whosebug 上找到了关于 shouldSelectRow 方法的信息,但它似乎无法正常工作。
func tableView(tableView: NSTableView, shouldSelectRow row: Int) -> Bool {
switch tableView.identifier! {
case "SetsTable":
print("Selected row:", row)
print("Objects after selection:", self.arrayController.selectedObjects)
self.appsTableView.reloadData()
return true
default:
return true
}
}
它在第一个 print 语句中显示正确的行,但是当涉及到第二个时,它似乎从完全不同的行中选择对象(如果我只有一行中有对象,它会显示一个空数组)
有谁知道这里的问题是什么以及如何正确显示所选行的对象?
是不是shouldSelectRow的问题?
当我在这个函数之外使用 self.arrayController.selectedObjects 时(例如,选择了该行,然后我点击了一个按钮调用以打印出 selectedObjects),它会正确显示。
名称中带有 'should' 的方法在其发生之前被调用,带有 'did' 的方法在其发生之后被调用。
tableView:shouldSelectRow:
在选择更改之前调用,因此委托可以拒绝新选择。
tableViewSelectionDidChange:
在选择更改后调用。 arrayController.selectedObjects
将是新的选择。
如果您想了解更多:Table View Programming Guide