2014-12-17 38 views
7

To pytanie jest rozszerzeniem link
(pytanie w linku jest głównie dla wiążące NSPopupbutton do NSArrayController)Binding obraz do NSPopupbutton z NSArrayController

Mam Person klasę posiadającą właściwości NSString *name i NSImage *avatar
I muszą pokazywać wszystkie nazwiska osób w przycisku Popup, jak widać na poniższym obrazku. enter image description here

Ale teraz, gdy wymaganie się zmieniło, muszę pokazać także awatara osoby.
Jak używać kakao wiązania związać awatar osoby do przycisku NSPopup tak, że wygląda tak jak na powyższym zdjęciu Michael (ostatnia opcja menu)


Uwaga: Michael został tymczasowo dodanego do demonstracji za pomocą następującego kodu:

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

NSMenuItem udostępnia wiązanie obrazu. Czy jest pytanie, jak ustawić rzeczy w Konstruktorze interfejsu? Ponieważ dano dostęp do NSMenuItem * i NSImage *, po prostu tworzysz powiązanie w taki sposób, w jaki tworzysz inne powiązanie. – stevesliva

+0

@stevesliva Tak – Kaunteya

+0

W jaki sposób dynamicznie tworzysz NSMenuItems. Ponieważ to tam zostanie wstawiony twój obraz. –

Odpowiedz

0

Istnieją dwa sposoby, można osiągnąć, że: -

najpierw wziąć tableview bazie komórek wewnątrz że dwie kolumny jeden dla komórki obrazu, a drugi dla komórki tekstowej. Wypełnić tabelę poprzez wiązania a następnie dodać tableview wewnątrz przycisku kontekstowego w poniższy sposób: -

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]; 

drugie wykonaj poniższe czynności: -

Zakładając, że tablica zawiera elementy nazw.

1) Wybierz swoje powiązanie arrayContoller z FileOwner's i ModelKeyPath->array.

2) Wybierz PopUpButton wewnątrz binding Inspector->Selected Object powiązania z FileOwner's i ModelKeyPath->yourString. To odpowiednio wybierze wymaganą nazwę.

3) Wybierz PopUpButton wewnątrz binding Inspector->Content Values i ModelKeyPath->array

4) Teraz do ustawiania image wewnątrz popupButton patrz poniżej kodu: -

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

Edycja: -

1) pierwsza metoda, w której twój tekst i obraz wypełniają się przez wiązanie, wystarczy dodać ten widok tabeli wewnątrz twojego popupbutton.

2) W drugiej metodzie twój popupbotton wyświetli obraz dla nazwiska, ale programowo. Ponadto, jeśli wymagane jest wyświetlanie obrazów dla wszystkich nazw, użyj pętli, aby ustawić obrazy w pozycji menu.

+1

Przeczytaj ponownie pytanie. Chcę zrobić tylko w Wiązaniach Cocoa. Byłem świadomy rozwiązania podanego przez ciebie. Również komentarz w bounty stwierdza: "Spodziewam się rozwiązania wiążącego". – Kaunteya

+0

Możesz użyć tableview i poprzez wiązanie możesz wypełnić dane. Ale musisz dodać ten widok tabeli w swoim popupbutton. Przejrzyj zaktualizowaną odpowiedź. –