Zaimplementowałem rozszerzenie Finder Sync zgodnie z dostarczoną próbką podaną przez Apple.Synchronizacja Findera: Nadawca przekazany do działania jest innym wystąpieniem NSMenuItem
Po kliknięciu nowo utworzonego elementu menu kontekstowego wykonywane jest odpowiednie działanie sampleAction
. Niestety nadawca przekazany do metody nie pasuje do instancji utworzonej w menuForMenuKind
.
Kod
- (NSMenu *)menuForMenuKind:(FIMenuKind)whichMenu
{
NSMenuItem* menuItem = [[NSMenuItem alloc] initWithTitle:@"testTitle" action:@selector(sampleAction:) keyEquivalent:@""];
menuItem.tag = 1;
// print menu attributes
NSLog(@"------------------original menu-----------------");
NSLog(@"menu address: %p", menuItem);
NSLog(@"menu tag: %ld", menuItem.tag);
NSLog(@"menu title: '%@'", menuItem.title);
NSMenu *menu = [[NSMenu alloc] initWithTitle:@""];
[menu addItem:menuItem];
return menu;
}
- (IBAction)sampleAction:(id)sender
{
if([sender isKindOfClass:[NSMenuItem class]])
{
NSMenuItem* menuItem = sender;
NSLog(@"------------------menu passed to action-----------------");
NSLog(@"menu address: %p", menuItem);
NSLog(@"menu tag: %ld", menuItem.tag);
NSLog(@"menu title: '%@'", menuItem.title);
}
}
wyniki w następujący wynik po kliknięciu na element w menu kontekstowym
2014-12-07 19:55:36.923 FinderSync Extension[1265:62630] ------------------original menu----------------
2014-12-07 19:55:36.923 FinderSync Extension[1265:62630] menu address: 0x6080000abbe0
2014-12-07 19:55:36.924 FinderSync Extension[1265:62630] menu tag: 1
2014-12-07 19:55:36.924 FinderSync Extension[1265:62630] menu title: 'testTitle'
2014-12-07 19:55:40.328 FinderSync Extension[1265:62630] ------------------menu passed to action----------------
2014-12-07 19:55:40.328 FinderSync Extension[1265:62630] menu address: 0x6080000aba00
2014-12-07 19:55:40.328 FinderSync Extension[1265:62630] menu tag: 0
2014-12-07 19:55:40.328 FinderSync Extension[1265:62630] menu title: ''
.
Czy istnieje możliwość połączenia nadawcy z pozycją menu, na którą kliknięto?
Masz jakieś rozwiązanie? –
Jeszcze nie, niestety :( –
hmm powiadomić Apple o Twoich potrzebach za pomocą systemu zgłaszania błędów Apple. Teraz używam innego selektora dla różnych pozycji menu. –