Sto cercando di capire quanto sia difficile utilizzare NSPopUpButton. È di gran lunga l'elemento utente più difficile da programmare in Cocoa (almeno per quanto lo trovo).NSPopUpButton, binding e durata della riduzione
Il caso d'uso che ho in mente è la seguente:
- ho una classe denominata Port che rappresenta una porta seriale.
- Tra gli attributi c'è un campo nome.
- In NSPopUpButton voglio visualizzare il campo del nome per ogni porta.
- Quando un utente seleziona una porta specifica viene contrassegnato nel pop-up con un segno di spunta come previsto
- Quando l'utente successivamente colpisce un pulsante di connessione, è possibile verificare quale delle porte della matrice è stata selezionata.
- Mi piacerebbe ottenere questo risultato utilizzando associazioni poiché penso che una volta che avrò la testa intorno a esso, sarà la soluzione più elegante.
Perciò nel mio AppController.h Mi aspetto due attributi che posso presumibilmente creare come proprietà e sintetizzare:
NSMutableArray *allPorts;
Port *currentlySelectedPort;
e uno d'azione nella mia .m:
-(void)didSelectConnect:(id)sender{
NSLog(@"Selected port name is:%@",[currentlySelectedPort name]);
}
in Port.h I have
NSString *name;
NSString *baudRate;
... etc ...
I ha Ho creato un semplice progetto che contiene solo un pop-up (e un'etichetta) e seguendo vari articoli, sono riuscito a popolare un NSMutableArray con elementi che poi uso un ArrayController per visualizzare i valori e quindi sulla selezione impostare il valore di un'etichetta (utilizzando un controller di oggetto). Tuttavia, per quanto questo sia intelligente, non si adatta al caso d'uso che sto cercando di implementare. Quindi mi rivolgo qui per aiuto
M
Si potrebbe prendere in considerazione l'idea di iniziare senza utilizzare i collegamenti. Scriverai altro codice, ma è imperativo che tu capisca quel codice (e tutte le tecnologie sottostanti dietro i binding come KVO) prima che tu possa davvero far funzionare i binding per te in esempi complessi. –