2009-12-09 15 views
5

Ho una NSWindow contenente un NSButton e un NSTableView.Abilitazione NSButton con associazioni, in base alla selezione NSTableView

Mi piacerebbe che il pulsante sia abilitato se e solo se la tabella contiene almeno un elemento e viene selezionato esattamente un elemento. (La tabella non consente selezioni multiple.)

In che modo è possibile associare il binding abilitato del pulsante per rendere possibile ciò?

+3

Questo suona un sacco come il modo tipico a Rimuovere/pulsante Elimina è abilitato. Il binding alla proprietà del controller -canRemove è sufficiente? –

+1

Hai considerato di passare a un controller di array? Rende queste cose super-facili. –

risposta

2

Provare a eseguire il binding al controller di array selectedObjects, percorso chiave modello count, senza trasformatore di valore.

Si noti che questo non sarebbe sicuro se si consentisse selezione multipla: per una cosa, il count potrebbe facilmente essere né YESNO; per un altro, se l'utente ha selezionato un multiplo di 256 articoli, il byte più basso del conteggio sarebbe 0, quindi il valore BOOL sarebbe NO anche se è presente una selezione.

+1

Non ho un controller di array ovunque. La vista tabella utilizza un delegato e un'origine dati. –

+4

Quindi usare Bindings è un po 'inutile per questo caso, non è vero? Crea una presa per il pulsante e imposta il suo stato abilitato direttamente quando la selezione cambia (tramite messaggio delegato). –

+1

Oppure creare una proprietà 'buttonEnabled' nel modello e associare a quello. Se vuoi davvero associare a 'NSTableView' puoi legare nel metodo' -awakeFromNib' la proprietà 'enabled' alla proprietà' selectedRowIndexes.count' della vista tabella. –

14

Questo è un vecchio thread, ma qui sono i miei 2 centesimi: uso e controller di array e rilegare stato abilitato il pulsante per

chiave Controller: selectedObjects Modello Percorso chiave: @count

funziona bene .

+0

Di tutte le informazioni qui, questa è l'unica tecnica che funziona per me. –

+0

Grazie ... stavo proprio scrivendo del codice per creare una nuova proprietà booleana :) –

+0

Non dimenticare di associare la selezione della Vista tabella al controller di array, non solo al suo contenuto. –

1

Mi sono imbattuto in questo oggi e ho avuto modo di lavorare dopo alcuni sforzi.

mio pulsante deve essere disabilitato se non è selezionato nella "Tabella Master":

problemi che ho incontrato:

  • Utilizzare il pulsante effettivo e non la pila a bottone racchiuso
  • Specificare NO = disabled per valori multipli, Nessuna selezione, ecc.
  • Associare la proprietà Enabled alla selezione della tabella master e utilizzare una proprietà (code nel mio caso), che è presente.
  • Utilizzare il trasformatore NSIsNotNil per abilitare il pulsante se qualcosa è selezionato nella tabella principale.

enter image description here

Problemi correlati