質問

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にあったもののリリースを引き起こしています。

ライセンス: CC-BY-SA帰属
所属していません StackOverflow
scroll top