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

Я уже задал пару вопросов по этой теме и на самом деле не получил реального ответа о том, как это сделать (на самом деле он получил "Значок Tumbleweed" lol).

У меня есть приложение на основе документа (это означает, что Menu.Xib отделен от MyDocument.Xib).

Скажем, я хочу добавить кнопку "Жирный" или кнопку "Проверить орфографию" (элементы, перечисленные в Menu.xib(в разделе "Формат" > "Шрифт" и т.д.) в MyDocument (основной интерфейс). Я не могу понять, как это сделать это.

Любая помощь будет принята с благодарностью (я сразу же вознагражу ответ, если это сработает, это натолкнуло меня на пару недель).

Я попытался добавить диспетчер шрифтов в MyDocument.Xib и подключиться таким образом, но кнопка Bold только позволяет, она не отключается. Кроме того, проверка орфографии и т.д. Не может быть активирована с помощью диспетчера шрифтов.

Должен быть лучший способ сделать это.

Документация Apple невероятно расплывчата.

Ответы

Ответ 1

Это именно то, для чего предназначен объект First Responder в IB. Это прокси-объект для подключения действий. Любые сообщения о действии, отправленные ему, передаются по цепочке ответчиков в первый объект, который их принимает. Для приложений на основе документов цепочка ответчиков включает текущий документ. Итак, чтобы связать элемент меню с вашим документом:

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

Если вам необходимо добавить сообщение к первому ответчику программно, установите цель объекта nil.