2010-05-13 17 views
10

Dokumentacja Apple mówi, że nadawca przekazany do działania NSMenuItem może zostać ustawiony na jakiś niestandardowy obiekt, ale nie mogę wymyślić, jak to zrobić. Czy istnieje metoda, której nie widzę w dokumentacji?Jak ustawić nadawcę w akcji NSMenuItem?

Odpowiedz

22

Nie jestem pewien, do jakiej części dokumentacji się odwołujesz (łącze pomogłoby).

Można zastosować metodę NSMenuItem-setRepresentedObject: skojarzyć dowolny obiekt z pozycji menu:

//assume "item" is an NSMenuItem object: 

NSString* someObj = @"Some Arbitrary Object"; 

[item setRepresentedObject:someObj]; 
[item setAction:@selector(doSomething:)]; 

wtedy, gdy pozycja menu wysyła wiadomość działania można uzyskać obiektu:

- (IBAction)doSomething:(id)sender 
{ 
    NSLog(@"The menu item's object is %@",[sender representedObject]); 
} 
+0

Nie pamiętam z góry, jaka to była dokumentacja, ale w końcu to wymyśliłem. –

+0

Głupie pytanie: Dlaczego warto używać obiektu RepresentObject, gdy możemy po prostu użyć tytułu NSMenuItem? –

+4

Nie powinieneś używać tytułów, ponieważ mogą one być zlokalizowane itp. O wiele lepiej jest użyć '-representedObject', ponieważ jest przeznaczony do przechowywania dowolnych danych. –