nStableCellViewがnStextFieldの値を保持していません
-
21-12-2019 - |
質問
DelegateのViewFortableColumnメソッドの内側にあります。リストビューの選択に基づいて、データソース内のテーブル列を動的に作成しています。
NSDictionary* rowData = [[self tableData] objectAtIndex:row];
NSString* identifier = [tableColumn identifier];
NSTableCellView* result = [tableView makeViewWithIdentifier:@"myCellView" owner:self];
if (result == nil) {
result = [[NSTableCellView alloc] initWithFrame:NSMakeRect(0, 0, 90.0, 10.0)];
_textField = [[NSTextField alloc] initWithFrame:NSMakeRect(0, 0, 90.0, 10.0)];
[result setTextField:_textField];
[[result textField] setStringValue:[rowData objectForKey:identifier]];
}
else {
[[result textField] setStringValue:[rowData objectForKey:identifier]];
}
NSLog(@"result text field: %@", [[result textField] stringValue]);
return result;
.
今
-(void)tableView:(NSTableView *)tableView didAddRowView:(NSTableRowView *)rowView forRow:(NSInteger)row {
NSLog(@"did add: %ld", row);
NSTableCellView* aView = [rowView viewAtColumn:0];
NSLog(@"%@", [[aView textField]stringValue]);
NSLog(@"%@",[[[rowView viewAtColumn:0 ] textField] stringValue]);
}
.
TextFieldはゾンビです。何が与えますか?あなたの助けをありがとう。
解決
は、ウィンドウコントローラのNStableCellViewの参照(IBoutlet)を取得しなければなりませんでした。それについて、他には何もありません。これで、NStableView Delegateの識別子を介してそれにアクセスできます。参照はすべての列を取り除き、TableViewに新しい列を追加した後でも保持されます。
今300~3000行の範囲のテーブル上の非常にABSYMALの表ビューパフォーマンスを扱う!それは別の日です。
他のヒント
私が考えることができる唯一のことはあなたがするときのことです:
_textField = [[NSTextField alloc] initWithFrame:NSMakeRect(0, 0, 90.0, 10.0)];
.
以前に_textField
にあったもののリリースを引き起こしています。
所属していません StackOverflow