【发布时间】:2011-05-04 13:36:55
【问题描述】:
我正在尝试使用 ArrayController 和 Bindings 设置带有自定义单元格的 NSTableView。为此,我向自定义单元格添加了一个子视图。数据连接似乎有点工作。虽然,似乎有一个我无法解决的重绘问题。当我加载应用程序时,只渲染了一些单元格。当我滚动浏览行或选择一个时,渲染会发生变化。
我创建了一个example project on github 来说明问题所在。
单元格渲染的实际源码可以在here找到:
// 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 没有重绘。我可以以某种方式强制它吗?
【问题讨论】:
标签: objective-c nstableview nscell nstextfieldcell custom-cell