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
が再描画しないようです。どうにか強制できませんか?