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:

  1. Chi dovrebbe essere il target dell'azione del pulsante?

  2. 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.

È stato utile?

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.

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