Pergunta

A seguir está dentro do delegado viewForTableColumn método.Eu estou criando a tabela de colunas na fonte de dados com base em uma seleção em um modo de exibição de lista.

    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;

Agora em

-(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 é um Zumbi.O que dá?Obrigado por sua ajuda.

Foi útil?

Solução

teve que obter uma referência (iboutlet) para o nstablecellview no controlador de janela.Isso é sobre isso, nada mais.Agora eu posso acessar isso através do seu identificador no Delegado NstableView;A referência é retida mesmo depois de remover todas as colunas e adicionar novas colunas à tabela.

Agora lidando com o desempenho muito abismal de tabela em uma tabela que varia de 300-3000 linhas!Isso é para outro dia.

Outras dicas

A única coisa que posso pensar é que quando você faz:

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

você está causando a liberação de tudo o que foi previoisly em _textField.

Licenciado em: CC-BY-SA com atribuição
Não afiliado a StackOverflow
scroll top