我正在尝试使用ArrayController和Bindings设置带有自定义单元格的NSTableView。为此,我向自定义单元格添加了一个子视图。数据连接似乎有点工作。虽然,似乎有一个我无法解决的重绘问题。当我加载应用程序时,只渲染了一些单元格。当我滚动浏览行或选择一个时,渲染会发生变化。
我在 github 上创建了一个示例项目来说明问题所在。
可以在此处找到单元格渲染的实际源代码:
// CustomCell.m
- (void)drawInteriorWithFrame:(NSRect)cellFrame inView:(NSView*)controlView {
if (![m_view superview]) {
[controlView addSubview:m_view];
}
// The array controller only gets wrapped data items pack by the NSObjectTransformer.
// Therefore, objectValue returns a NSObjectWrapper.
// Unpack the wrapper to retreive the data item.
DataItem* dataItem = [(NSObjectWrapper*)[self objectValue] original];
[[m_view name] setStringValue:dataItem.name];
[[m_view occupation] setStringValue:dataItem.occupation];
[m_view setFrame:cellFrame];
}
似乎父母controlView
没有重绘。我可以以某种方式强迫它吗?