【问题标题】:When does selectedCell change?selectedCell 什么时候改变?
【发布时间】:2009-08-07 02:15:00
【问题描述】:

我有一个 NSTableView,我想在 selectedCell 元素发生变化时做一些事情。

所以,我的表格视图叫做tableView,这就是我要观察的:

[tableView selectedCell]

我尝试使用键值观察,但这似乎不起作用,或者我做错了。有什么想法吗?

【问题讨论】:

    标签: objective-c cocoa nstableview


    【解决方案1】:

    Cocoa 自己的类的大多数属性是不可观察的。如果一个属性是可观察的,它的文档会明确说明;如果文档没有说属性是可观察的,则假设它不是。

    此外,不存在的属性是双重不可观察的。 NSTableViewNSOutlineView 的文档都没有提到名为“selectedCell”的方法。你应该假设没有。

    如果您想知道用户何时选择了不同的行,请成为表格视图的委托人;它会为此发送委托消息,如果您愿意回复的话。

    【讨论】:

    • selectedCell 是 NSControl 的一个方法,NSTableView 继承自该方法。有没有其他方法可以通知我光标位于 NSTableView 的新单元格中?
    • 啊,我的错。我总是忘记表格视图具有控制性质。即便如此,我不确定selectedCell 是否适用于表格视图。至于检测用户何时编辑单元格,也有相应的委托方法。
    • 顺便说一句,如果您只是想使您的数据可编辑,那么在逐个单元格级别上工作并不是这样做的方法。要么是数据源并实现tableView:setObjectValue:forTableColumn:row:,要么将你的表列绑定到一个持有数组的控制器,并确保控制器允许编辑并且模型对象是可变的(它们应该是可变的,除非你以其他方式制作它们)。
    【解决方案2】:

    NSTableView 将为每一列使用一个且仅一个 dataCell 对象。 selectedCell 是错误的方式。您可以使用selectedColumn 获取所选列,然后请求其dataCell

    而且:我猜你正在寻找 NSTableView 委托方法 tableViewSelectionDidChange:tableViewSelectionIsChanging:

    【讨论】:

      猜你喜欢
      • 2014-10-14
      • 1970-01-01
      • 2017-04-17
      • 2019-10-05
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2021-10-08
      • 1970-01-01
      相关资源
      最近更新 更多