приложение на основе документа какао с общими окнами? - PullRequest
1 голос
/ 01 ноября 2010

Я разрабатываю приложение на основе документов. Каждый документ имеет три окна (и, следовательно, три оконных контроллера). Я хотел бы настроить его так, чтобы два из трех окон были общими для разных открытых документов (при необходимости менялись представления). Это возможно? Кто-нибудь может указать мне правильное направление (документация или примеры)?

Спасибо!

Ответы [ 3 ]

2 голосов
/ 01 ноября 2010

В этом случае эти контроллеры общих окон не должны принадлежать какому-либо документу (поскольку каждый документ будет иметь свою собственную пару «общих» окон), но должны быть независимыми, вероятно, принадлежать делегату приложения или документу.контроллер.Вы также можете захотеть сделать панели окон, как Инспектор.

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

Практически любой учебник о том, как сделать окно инспектора, поможет вам здесь.

0 голосов
/ 28 февраля 2013

Возможно, но это займет нетривиальный объем работы с вашей стороны.Итак, вот что вам нужно сделать:

  • Переопределить setDocument: в контроллере окна и сохранить связи, которые он имеет с каждым документом.
  • Убедитесь, что каждый контроллер окна (NSWindowController) отсоединяется от документа до закрытия окна.То же самое относится к каждому контроллеру представления, который может обрабатывать представления внутри окна.
  • Подкласс контролера документа (NSDocumentController) и заботиться о закрытии документа, чтобы удостовериться, что многодокументные окна отделены от документов передлюбой из документов закрыт.NSDocumentController является одноэлементным, и поэтому вам необходимо добавить экземпляр в файл MainMenu.xib, чтобы заменить его по умолчанию.

Вы можете прочитать мое пошаговое руководство по , какдобавьте поддержку контроллеров окон с несколькими документами здесь .

0 голосов
/ 01 ноября 2010

Похоже, вам нужно переопределить -makeWindowControllers в вашем подклассе NSDocument, чтобы создать нужные контроллеры, вызвав -addWindowController: в подклассе NSDocument, чтобы добавить ваши контроллеры общего окна.Я должен был сделать это, но вот методы, на которые я смотрю.

Из справочника Apple по классу NSDocument:

makeWindowControllers

Подклассыможет переопределить этот метод для создания начальных оконных контроллеров для документа.

- (void)makeWindowControllers

Обсуждение

Реализация базового класса создаетNSWindowController объект с windowNibName и с документом в качестве владельца файла, если windowNibName возвращает имя.Если вы переопределите этот метод для создания своих собственных контроллеров окна, обязательно используйте addWindowController: чтобы добавить их в документ после их создания.

Этот метод вызывается методами open ... NSDocumentController, но вы можетехочу позвонить напрямую при некоторых обстоятельствах.

...