Несколько документов открываются одновременно, каждый с различными состояниями пунктов меню - PullRequest
1 голос
/ 05 ноября 2010

В приложении Какао, основанном на документах, как наилучшим образом синхронизировать состояния элементов меню в строке меню с текущим видимым документом?

Например, допустим, у вас есть документ с представлением линейки, который можно скрыть / показать с помощью пунктов меню «Показать линейки» (отключено) и «Скрыть линейки» (включено). У пользователя есть два открытых документа одновременно. Он / она спрятал правителей в одном документе, но не в другом. Когда пользователь перемещается между документами, пункт меню должен отражать состояние этого документа, а не приложения в целом.

Как сделать это чисто? Я гуглил, но не похоже, что есть предопределенный «готовый» способ сделать это. Было бы хорошо, если бы в NSDocument был какой-то метод типа «didRegainFocus», в который можно добавить такую ​​логику.

Моя фактическая реализация немного сложнее, так как на самом деле это NSViewController внутри моего NSDocument, который работает с этими конкретными пунктами меню.

@interface MyDocument : NSDocument {
  SomeViewController *myCustomizedTextViewController;
}

Когда MyDocument является текущим активным документом, мне нужны методы в myCustomizedTextViewController, чтобы обеспечить состояние пары NSMenuItem в главном меню приложения. Один действительно является правителем. Другой аналогичный временный параметр.

1 Ответ

1 голос
/ 05 ноября 2010

У цели пунктов меню должен быть реализован метод validateUserInterfaceItem: для их включения / выключения.Для получения дополнительной информации см. Ссылку Проверка пользовательского интерфейса .

...