所以我试图学习如何创建一个简单的OS X应用程序并且我有点困惑。
我得到了这个表视图 - 将它连接到阵列控制器等已经很奇怪。
它工作正常 - 暂时,但我想在用户点击特定行时触发特定操作。
我在stackoverflow上找到了关于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语句中显示正确的行,但是当它到达第二个时,它似乎从完全不同的行中选择对象(如果我只有一行包含对象,则它显示一个空数组)
有谁知道这里的问题是什么以及如何正确显示所选行的对象?
这不是问题选择吗?
当我在此函数外使用self.arrayController.selectedObjects时(例如,选择了行并点击了一个调用打印出selectedObjects的按钮),它会正确显示。
答案 0 :(得分:1)
在名称中带有'should'的方法在它发生之前被调用,之后调用带有'did'的方法。
在选择更改之前调用 tableView:shouldSelectRow:
,以便委托可以拒绝新选择。
tableViewSelectionDidChange:
。 arrayController.selectedObjects
将成为新选择。
如果您想了解更多信息:Table View Programming Guide