bas*_*ibe 1 cocoa objective-c nstableview nstableviewcell
我有一个NSTableView带复选框的小号.每当未选中复选框时,我希望其中一个相邻的NSCells变灰并且无法访问.
但是,我无法弄清楚如何只处理一个特定的细胞.-dataCellForRow的NSTableColumn总是改变整个表列的样板单元.
我如何访问一个单个单元格?
编辑:我使用NSTableViewDataSource协议填写表格视图.
你不"访问一个单元格".NSTableView仅在必要时请求数据,您不填充它或直接控制它.
而是创建一个控制器对象来实现NSTableViewDatasource和可选的NSTableViewDelegate协议.然后,表视图将数据源消息发送到控制器,控制器会提供相应的数据.
您可以通过实现?tableView:setObjectValue:forTableColumn:row:数据源方法来允许编辑表视图中显示的对象.当用户单击复选框时,将在您的控制器对象上调用此方法.您的控制器有责任适当更新模型.
更新模型后,控制器应告知表视图重新加载.然后,表视图将询问控制器是否需要使用?tableView:objectValueForTableColumn:row:数据源方法显示的任何单元格的值.这将包括您需要禁用的单元格.您的控制器需要为单元提供适当的值.
如果需要更多控制单元格,可以实现
?tableView:willDisplayCell:forTableColumn:row:委托方法.在显示单元格之前调用此方法,您可以适当地修改单元格.
有关使用数据源的更多信息,请参阅文档.
另一个选项(而不是使用数据源)是使用Cocoa Bindings和NSArrayController绑定到模型对象集合的.在这种情况下,您可以将Enabled表列的绑定绑定到控制单元的启用状态的模型对象的某个属性.您有责任确保该财产的状态是正确的.
如果需要使属性依赖于另一个属性的值,则可以使用Key-Value Observing文档中概述的依赖键机制.
| 归档时间: |
|
| 查看次数: |
2475 次 |
| 最近记录: |