Pregunta

Lo siguiente está dentro del método de Delegado LamaballableColumn.Estoy creando dinámicamente columnas de tabla en el DataSource basándose en una selección en una vista 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;

ahora en

-(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]);
}

El campo de texto es un zombi.¿Lo que da?Gracias por tu ayuda.

¿Fue útil?

Solución

tuvo que obtener una referencia (Iboutlet) para el NStablecellView en el controlador de la ventana.Eso es algo, nada más.Ahora puedo acceder a eso a través de su identificador en el delegado de NStableview;La referencia se conserva incluso después de eliminar todas las columnas y agregar nuevas columnas a la TablaView.

¡Ahora trato con un rendimiento muy abismal de la visión en las mesas que van desde 300-3000 filas!Eso es para otro día.

Otros consejos

Lo único que puedo pensar es que cuando lo hagas:

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

Está causando una liberación de lo que era anteriormente en _textField.

Licenciado bajo: CC-BY-SA con atribución
No afiliado a StackOverflow
scroll top