Вопрос

Следующее находится внутри метода 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 — это зомби.Что дает?Спасибо за вашу помощь.

Это было полезно?

Решение

Пришлось получить ссылку (iboutlet) для NstableCellView в окне контроллера.Вот об этом, ничего больше.Теперь я могу получить доступ к тому, что через его идентификатор в делегате NStableView;Ссылка сохраняется даже после удаления всех столбцов и добавление новых столбцов в таблицу.

Сейчас дело с очень Abysmal TablView Production на таблицах от 300 до 3000 рядов!Это еще один день.

Другие советы

Единственное, о чем я могу думать, это то, что когда вы это делаете:

_textField = [[NSTextField alloc] initWithFrame:NSMakeRect(0, 0, 90.0, 10.0)];

вы вызываете высвобождение всего, что было раньше _textField.

Лицензировано под: CC-BY-SA с атрибуция
Не связан с StackOverflow
scroll top