1

在我的可可应用程序中有一个 NSTableView(基于 10.7 lion 视图的 tableview)只包含一列,其中的单元格是自定义的 NSTableCellView,其中有几个视图,其中一个是 NSImageView。

我的数据模型有一个整数状态变量,我使用可可绑定和 NSValueTransformer 为这个 NSImageView 提供不同的 NSImage。

问题是,图像不会自动更新。状态更改后,图像仅反映重新加载列表后的更改。

谢谢你的帮助 :)

4

1 回答 1

0

最后我解决了我自己的问题。

我为模型的“状态”整数属性添加了观察者。当此状态发生变化时,实际表格单元格的图标(NSImageView)已根据可可绑定发生变化,但未更新。然后在observe回调方法中,添加即可

- (void)observeValueForKeyPath:(NSString *)keyPath ofObject:(id)object change:(NSDictionary *)change context:(void *)context
{
Model *m = (Model*)context;
NSInteger idx = [self.modelArray indexOfObject:m];
NSTableRowView *row = [self.tableView rowViewAtRow:idx makeIfNecessary:NO];
ListCellItem *cell = [row viewAtColumn:0];
cell.icon.needsDisplay = YES;
[cell.icon.image recache];
[cell.icon display];
}

然后,只要状态更改,图像就会更新。

于 2011-10-07T06:15:28.303 回答