Как включить различные пункты меню, созданные по умолчанию в приложении какао? - PullRequest
1 голос
/ 21 июля 2011

Я пытаюсь создать графический интерфейс для простого созданного мной шестнадцатеричного редактора. Но я не могу включить ни один из пунктов меню по умолчанию (т. Е. «Открыть ...», «Сохранить» и т. Д.). Независимо от того, что я делаю, они всегда отображаются серым цветом и не активируются.

Я попытался связать пункт меню «Открыть ...» с полученным действием объекта первого ответчика openDocument:, а также с именем нового класса FileMenuController.m, в котором есть только один метод -(IBAction)openDocument:(id)sender; Я новичок в XCode, Интерфейсный Разработчик и Objective-C и в недоумении о том, как продолжить.

Примечание. Это приложение не основано на документах.

Спасибо за помощь!

1 Ответ

7 голосов
/ 21 июля 2011

У вас правильная идея.Есть два способа включить пункты меню, как описано в Включение пунктов меню .При автоматическом включении система проверит цепочку респондента на предмет поиска объектов, которые реализуют действие для каждого элемента в меню.Если он находит респондента с соответствующим действием, он активирует этот пункт меню.

Итак, вы подключили свой пункт меню к первому респонденту и реализовали то же действие в своем классе FileMenuController,Другие вещи, которые вам нужно сделать:

  • Убедитесь, что FileMenuController наследуется от NSResponder, чтобы он мог быть частью цепочки респондента
  • Создайте экземпляр FileMenuControllerи убедитесь, что это часть цепочки респондента.

По правде говоря, вам, вероятно, не нужен отдельный объект для управления меню «Файл».Вместо этого вы обычно помещаете свое действие -openDocument: в делегат приложения, поскольку это всегда является частью цепочки респондента и потому что открытие документа - это то, что делает приложение (в отличие, скажем, от окна или представления).Другие команды в том же меню, такие как «Сохранить», «Сохранить как», «Закрыть» и «Печать», будут реализованы не делегатом приложения, а документом, контроллером окна или любым другим объектом, управляющим документом / файлом.Таким образом, команда «Открыть» будет в значительной степени всегда включена (поскольку делегат приложения почти всегда находится в цепочке респондента), но «Сохранить», «Закрыть» и «Печать» будут включены только при наличии документа, доступного для обработки этих команд.

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

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...