Совместное использование NSMenuItems через несколько NSMenus - PullRequest
0 голосов
/ 17 августа 2010

У меня есть несколько меню в одном приложении, и я хотел бы разделить подменю между ними.

Для простоты, скажем, одно - главное меню, а другое - меню плитки док-станции ..

У меня есть подменю, которое содержит довольно много элементов (скажем, имен шрифтов), многие из которых мне нужно сохранять по ссылке на iboutlet по разным причинам.

В IB я не могу найти какой-либо способ «совместного использования» этих подменю, поэтому в итоге я дублирую определения IB (т. Е. Заново создаю вручную каждый элемент в двух разных местах), сохраняя ссылки на два nsmenuitems вместо только один, и т.д .. это не приятно.

Есть ли способ обмена определениями подменю между несколькими NSMenus?

Я пытался создать элемент меню верхнего уровня в IB, но потом я не могу связать его с чем-либо в определениях меню. Кроме того, я беспокоюсь, что даже если мне удастся сделать это программно, это может испортить привязки, иерархию респондентов, управление памятью и т. Д.

Есть ли лучшая практика для этого? кто-нибудь сделал это? и каковы были результаты?

1 Ответ

1 голос
/ 17 августа 2010

Если один и тот же контроллер является целью всех пунктов меню, установите его в качестве их делегата и предложите ему реализовать протокол NSMenuDelegate, в частности методы numberOfItemsInMenu: и menu:updateItem:atIndex:shouldCancel:. Каждое меню спросит вас, сколько предметов должно быть, создайте столько пунктов, сколько необходимо для заполнения дефицита, а затем попросите вас заполнить их (включая настройку их действий и, возможно, целей).

Результатом является одно место в вашем коде, определяющее оба меню.

...