Domanda

Voglio usare una sottoclasse NSFormatter per formattare il contenuto di un NSPopUpButton che sto usando per visualizzare un elenco di scelte.

Fondamentalmente ho un NSArray di MyObjects che è associato a NSPopUpButton tramite l'associazione Content Values ??e voglio visualizzare qualcosa nel menu a comparsa diverso da quello che viene restituito da -description. Non voglio davvero usare un trasformatore perché poi devo creare un array completamente nuovo e trasformare ogni oggetto in una stringa prima di aggiungerlo al nuovo array.

Usando setFormatter: su NSPopUpButton stesso tramite IB o codice non funziona, sospetto perché solo il formatter per la singola cella viene applicato agli elementi nell'elenco.

Esiste un modo semplice per impostare un formattatore per tutte le celle di NSPopUpButton? Fondamentalmente voglio solo essere in grado di impostarlo una volta e non pensarci più.

È stato utile?

Soluzione

In genere si associa il pulsante popup a un controller di array che contiene oggetti modello personalizzati (tramite l'associazione del contenuto) e si utilizza l'associazione dei valori del contenuto per specificare un valore chiave su quell'oggetto con la stringa che si desidera utilizzare come titolo .

Da quello che ho capito, hai una serie di stringhe semplici che vuoi usare come origine dati, solo tu vuoi visualizzare una stringa diversa per il titolo, giusto?

Non sono sicuro del motivo per cui realizzare un trasformatore di dati non funzionerebbe se impostato come sopra-- o forse sto fraintendendo qualcosa? Si avrebbe un binding alla stringa effettiva e un altro alla stringa utilizzando un trasformatore, ma entrambi utilizzerebbero lo stesso controller di array. Le altre opzioni sono la creazione di una classe di modello per avvolgere le stringhe e fornire una proprietà del titolo o la creazione di una categoria su NSString che restituisce il titolo da utilizzare come associazione del valore di visualizzazione. In tutti questi casi puoi creare il tuo NSFormatter nel codice e usarlo per restituire il titolo di stringa corretto.

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