Come impostare setEnabled: per NSButton in un NSTableView
-
13-10-2019 - |
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 .
- Imposta il
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.