如何更新NSTableCellView的可视化方面?

时间:2012-11-28 16:03:15

标签: objective-c macos cocoa nstableview nstablecellview

我有一个自定义NSTableCellView,其中包含2个NSTextField,1个NSProgressIndicator和2个按钮。
我想在重新加载表时隐藏1个按钮和Progress Indicator。问题是如果隐藏了我的NSTableView,当我重新加载它时,视觉会更新,否则NSTableCellView保持不变(进度条和标签继续可见)。

这是一个例子:
enter image description here
第一行被更新(我在隐藏时重新加载了表的数据),但第二行没有(当我激活并可见时,我重新加载了表的数据)。 有什么想法吗?

1 个答案:

答案 0 :(得分:0)

调用表的cellForRowAtIndexPath:方法。如果单元格不可见,它将返回nil

(不要将它与同名的委托方法混在一起)

一旦你访问了单元格,你应该能够将它类型化为你的自定义子类(你可能想要测试它是否属于适当的类)并访问它们的属性并以你想要的任何方式处理它们。

假设它是第一部分(索引0)的第3行(索引2)的示例:

NSUInteger indexArr[] = {0,2};
NSIndexPath *indexPath = [NSIndexPath indexPathWithIndexes:indexArr length:2];
UITableViewCell *cell = [self.tableView cellForRowAtIndexPath:indexPath];