Подменю совместного доступа NSSharingService

Как добавить подменю Share в приложении Mac? Например, Safari > File > Share. Я ткнул в пример кода Apple SharingServices, но он не включает рабочий элемент меню.

enter image description here

Прямо сейчас у меня есть кнопка, которая отображает сборщик доступных служб совместного доступа при нажатии:

NSMutableArray *shareItems = [NSMutableArray arrayWithObject:[self.noteSynopsisView string]];
NSSharingServicePicker *sharingServicePicker = [[NSSharingServicePicker alloc] initWithItems:shareItems];
sharingServicePicker.delegate = self;
[sharingServicePicker showRelativeToRect:[self.shareButton bounds] ofView:self.shareButton preferredEdge:NSMaxYEdge];

Я также определил элемент подменю Share в меню "Файл" для моего MainWindow.xib.

Как я понимаю, список NSSharingService генерируется "на лету". Поэтому я не могу предопределить службы для элемента меню, который я создал в Interface Builder.

Спасибо за вашу помощь.

Ответ 1

Посмотрите на NSSharingService + shareServicesForItems:. В методе -validateMenuItem: вы можете создать подменю, используя -title и -image возвращаемого NSSharingServices. Свяжите каждую службу с каждым пунктом меню и укажите действие каждого элемента меню следующим образом:

- (IBAction)shareFromService:(id)sender {
  [[sender representedObject] performWithItems: arrayOfItemsToShare];
}

Это действительно довольно просто. Apple сделала хорошую работу на этом.

Ответ 2

Я нахожу, что суть может помочь вам легко создать подменю надлежащих сервисов. https://gist.github.com/eternalstorms/4132533

Это категория NSSharingServicePicker.