В приложении на основе документов на какао, как лучше всего сохранить состояния элементов меню в строке меню в синхронизации с текущим видимым документом?Одновременно открываются несколько документов, каждый из которых имеет разные позиции в меню.
Например, у вас есть документ с изображением линейки, который может быть скрыт/показан через элементы меню «Показать линейки» (выключено) и «Скрыть линейки» (в состоянии). Пользователь одновременно открывает два документа. Он скрыл правителей в одном документе, но не с другой. Когда пользователь перемещается между документами, элемент меню должен отражать состояние для этого документа, а не для приложения в целом.
Как это сделать чисто? Я googled вокруг, но не похоже, что есть предопределенный «из коробки» способ сделать это. Было бы неплохо, если бы NSDocument имел какой-то метод типа didRegainFocus, в который можно добавить такую логику.
Моя фактическая реализация немного сложнее, поскольку на самом деле это NSViewController внутри моего NSDocument, который имеет дело с этими конкретными пунктами меню.
@interface MyDocument : NSDocument {
SomeViewController *myCustomizedTextViewController;
}
Когда MyDocument
является в настоящее время активный документ, мне нужны методы myCustomizedTextViewController
для обеспечения состояния пары NSMenuItem
с в главном меню приложения. Один из них действительно правитель. Другая аналогичная временная установка.
Спасибо за этот вопрос, мне было интересно то же самое при запуске приложения. – ptrico