NSTableCellView (またはそのサブクラス) を NSTableView から手動で削除するにはどうすればよいですか?
情報を保持している配列を空にし、新しい情報のために DB をキューに入れ、テーブル データをリロードすると、新しい配列リストにあるものと同様のインデックス値でセルのみが更新されます。
元。
最初に配列に 8 つのオブジェクトがあり、それらは正常に表示されます。配列を更新して 3 つしかない場合、テーブルの上位 3 つのセルが更新されますが、最後の 5 つは古いセルのままです。古いものは選択できず、表示されるだけです。そして、私はいくつかの再描画/割り当て解除を見逃していると思います..
TableView で setNeedsDisplay を試しましたが、まだ運がありません。
ARC、Xcode 4.6.1、および OS X 10.8.3 を使用しています
サンプルコード
- (NSInteger)numberOfRowsInTableView:(NSTableView *)tableView {
return [_array count];
}
- (NSView *)tableView:(NSTableView *)tableView viewForTableColumn:(NSTableColumn *)tableColumn row:(NSInteger)row {
[_tableView setNeedsDisplay];
NSDictionary *d = [_array objectAtIndex:row];
NSString *identifier = [tableColumn identifier];
if ([identifier isEqualToString:@"MainCell"]) {
CustomCellView *cellView = [tableView makeViewWithIdentifier:@"MainCell" owner:self];
[cellView.textField setStringValue:d[@"from"]];
[cellView.subject setStringValue:d[@"subject"]];
[cellView.text setStringValue:d[@"text"]];
[cellView.date setStringValue:d[@"date"]];
return cellView;
}
return nil;
}