Domanda

Ciao a tutti Ho un NSTableView che ha tre colonne. Il primo è una casella di controllo e il terzo è un pulsante. Il pulsante 'è abilitato' stato dipende se la casella è selezionata.

io pongo il contenuto della tabella nel metodo awakeFromNib e io sono l'attuazione dello stato casella di controllo nel metodo - (id)tableView:(NSTableView *)tableView objectValueForTableColumn:(NSTableColumn *)tableColumn row:(int)row . Ho bisogno di trovare un modo per setEnabled: la NSButton

Grazie

Nessuna soluzione corretta

Altri suggerimenti

Un buon modo per impostare gli stati dei pulsanti in un NSTableView è quello di utilizzare un NSArrayController e associarlo alle colonne del NSTableView:

  • associare la colonna che contiene i pulsanti a NSArrayController (vedi questo esempio )
  • In Abilitato
    • Imposta il Controller Key a arrangedObjects
    • Impostare il Model Key Path per stato del pulsante del NSArrayController. Ad esempio, chiamiamolo abilitato .

Ora nella classe in cui si ha la NSArrayController e il delegato NSTableView, fare qualcosa di simile dopo aver fatto clic su una casella di controllo:

- (void)updateArrayControllerWithButtonState: (BOOL)isEnabled
{
    // theTable is the NSTableView instance variable
    NSInteger row = [theTable clickedRow];

    // Get the array of values that populates the table
    NSMutableDictionary *arrayValues = [[theArrayController arrangedObjects] objectAtIndex:row];

    // Actually change the NSArrayController's value to match
    [arrayValues setObject:[NSNumber numberWithBool:[model isEnabled]] forKey:@"enabled"];

    [theTable reloadData];
}

A condizione di impostare le associazioni correttamente per il NSArrayController & NSTableView, questa funzione dovrebbe aggiornare lo stato corrente del pulsante per abbinare quello del NSArrayController.

Questo codice non è testato, ma dovrebbe far luce su l'idea generale.

Autorizzato sotto: CC-BY-SA insieme a attribuzione
Non affiliato a StackOverflow
scroll top