2014-12-17 9 views
7

Questa domanda è un'estensione per link
(La domanda nel link principalmente obiettivi, vincolanti NSPopupbutton ad un NSArrayController)immagine rilegatura a NSPopupbutton da NSArrayController

Ho una classe Person con proprietà NSString *name e NSImage *avatar
I devi mostrare tutti i nomi delle persone nel pulsante Popup come si vede nell'immagine qui sotto. enter image description here

Ma ora, come requisito è cambiato, ho bisogno di mostrare avatar di persona anche.
Come uso attacchi Cocoa per legare avatar della persona di tasto NSPopup in modo che appaia come quella immagine sopra a Michael (ultima opzione di menu)


Nota: Michael è stato temporaneamente aggiunto per la dimostrazione utilizzando il codice seguente:

person.title = @"Michael"; 
person.image = [NSImage imageNamed:@"avatar.png"]; 
[_popupButton.menu addItem:person]; 
+0

NSMenuItem espone un'immagine vincolante. La domanda su come impostare le cose in Interface Builder? Poiché l'accesso a NSMenuItem * e NSImage * è consentito, è sufficiente creare un binding nel modo in cui si creano altri binding. – stevesliva

+0

@stevesliva Sì – Kaunteya

+0

Come creare dinamicamente NSMenuItems. Perché questo è dove sarà iniettata la tua immagine. –

risposta

0

ci sono due modi per raggiungere tale: -

togli prima la Tableview a base di cellule all'interno di quella a due colonne uno per cella immagine e secondo per cella testo. Popolare la tabella tramite attacchi e quindi aggiungere il Tableview all'interno del vostro tasto popup nel modo di seguito: -

NSMenu *theMenu = [[NSMenu alloc] initWithTitle:@""]; 
NSMenuItem *Item = [[NSMenuItem alloc] initWithTitle:@"NameList" action:NULL keyEquivalent:@""]; 
[Item setView:self.tableVw]; 
[theMenu addItem:Item]; 
[self.popUptn setMenu:theMenu]; 

Seconda attenersi alla seguente procedura semplice: -

Supponendo che l'array contiene gli elementi di nome.

1) Selezionare il numero arrayContoller associato a FileOwner's e ModelKeyPath->array.

2) Selezionare PopUpButton all'interno di binding Inspector->Selected Object associazione a FileOwner's e ModelKeyPath->yourString. Questo selezionerà il nome richiesto di conseguenza.

3) Selezionare PopUpButton all'interno binding Inspector->Content Values e ModelKeyPath->array

4) Ora, per l'impostazione del image all'interno popupButton riferimento sottostante Codice: -

NSMenuItem *menuItm=[self.popUpBtn itemWithTitle:@"Michael"]; 
[menuItm setImage:[NSImage imageNamed:@"dot.gif"]]; 

Edit: -

1) In il primo metodo che il tuo testo e la tua immagine stanno popolando tramite l'associazione, solo tu devi aggiungere quella tabella all'interno del tuo popupbutton.

2) Nel secondo metodo il pulsante popup mostrerà l'immagine per cognome ma a livello di programmazione. Inoltre, se necessario per visualizzare le immagini per tutti i nomi, utilizzare per loop per impostare le immagini all'interno della voce di menu.

+1

Per favore leggi di nuovo la domanda. Voglio fare solo in Cocoa Bindings. Ero a conoscenza della soluzione da te fornita. Anche il commento in bounty recita "Sono in attesa di una soluzione vincolante". – Kaunteya

+0

È possibile utilizzare tableview e tramite associazione è possibile popolare i dati. Ma è necessario aggiungere quella vista tabella all'interno del pulsante popup. Fare riferimento alla risposta aggiornata. –

Problemi correlati