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