NSButton in NSTableCellView: come trovare objectValue desiderato?
-
27-10-2019 - |
Domanda
Ho un NSTableView basato sulla visualizzazione che viene popolato tramite collegamenti.I miei textField e imageViews sono vincolati alle proprietà objectValue di NSTableCellView.
Se voglio avere un pulsante di modifica / informazioni nel mio NSTableCellView:
-
Chi dovrebbe essere il target dell'azione del pulsante?
-
In che modo il target ottiene l'oggetto objectValue associato alla cella in cui si trova il pulsante?
Alla fine vorrei mostrare un popover / foglio basato su objectValue.
Soluzione
La tua classe controller può essere l'obiettivo.Per ottenere il valore dell'oggetto:
- (IBAction)showPopover:(id)sender {
NSButton *button = (NSButton *)sender;
id representedObject = [(NSTableCellView *)[button superview] objectValue];
}
Oppure, utilizza una sottoclasse di NSTableCellView
, imposta la visualizzazione della cella come obiettivo dell'azione del pulsante e chiama [self objectValue]
per ottenere l'oggetto.
Altri suggerimenti
Ho trovato un'ulteriore risposta: la risposta sopra sembra presumere che tu stia utilizzando i collegamenti nella visualizzazione tabella.Dato che sono una specie di noob, ho trovato un modo per ottenere il pulsante all'interno della cella della vista tabella.
- (IBAction)getCellButton:(id)sender {
int row = [xmlTable rowForView:sender];
}
In questo modo quando fai clic sul pulsante all'interno della riga, non è necessario che la riga sia selezionata.Restituirà il valore int della riga in modo che corrisponda a un'origine dati in un array senza associazioni.