【发布时间】:2009-08-07 02:15:00
【问题描述】:
我有一个 NSTableView,我想在 selectedCell 元素发生变化时做一些事情。
所以,我的表格视图叫做tableView,这就是我要观察的:
[tableView selectedCell]
我尝试使用键值观察,但这似乎不起作用,或者我做错了。有什么想法吗?
【问题讨论】:
标签: objective-c cocoa nstableview
我有一个 NSTableView,我想在 selectedCell 元素发生变化时做一些事情。
所以,我的表格视图叫做tableView,这就是我要观察的:
[tableView selectedCell]
我尝试使用键值观察,但这似乎不起作用,或者我做错了。有什么想法吗?
【问题讨论】:
标签: objective-c cocoa nstableview
Cocoa 自己的类的大多数属性是不可观察的。如果一个属性是可观察的,它的文档会明确说明;如果文档没有说属性是可观察的,则假设它不是。
此外,不存在的属性是双重不可观察的。 NSTableView 和 NSOutlineView 的文档都没有提到名为“selectedCell”的方法。你应该假设没有。
如果您想知道用户何时选择了不同的行,请成为表格视图的委托人;它会为此发送委托消息,如果您愿意回复的话。
【讨论】:
selectedCell 是否适用于表格视图。至于检测用户何时编辑单元格,也有相应的委托方法。
tableView:setObjectValue:forTableColumn:row:,要么将你的表列绑定到一个持有数组的控制器,并确保控制器允许编辑并且模型对象是可变的(它们应该是可变的,除非你以其他方式制作它们)。
NSTableView 将为每一列使用一个且仅一个 dataCell 对象。 selectedCell 是错误的方式。您可以使用selectedColumn 获取所选列,然后请求其dataCell。
而且:我猜你正在寻找 NSTableView 委托方法
tableViewSelectionDidChange: 和 tableViewSelectionIsChanging:
【讨论】: