Ссылка на подкласс NSWindowController возвращает его документ - это правильно? - PullRequest
0 голосов
/ 06 мая 2011

Я новичок в приложениях, основанных на документах, и, следовательно, я мог упустить что-то фундаментальное. Я написал основанное на документе приложение, которое использует подклассный NSWindowController для интерфейса и подклассированный NSDocument для модели. Согласно документации, я инициализирую windowController в makeWindowControllers и загружаю его xib. В конструкторе интерфейса xib имеет мой подкласс windowController, установленный в качестве владельца файла. Среди представлений в окне у меня есть подкласс NSOutlineView, а источник данных и делегат NSOutlineView также отображаются в кончике и подключаются к контроллеру окон через IBOutlets.

Согласно документации, я должен иметь доступ к документу из источника данных OutlineView через [windowController document]. Однако ссылка на windowController (через IBOutlet) из источника данных OutlineView дает мне документ вместо этого!

Это привело к некоторому довольно уродливому коду в базе данных OutlineView (который является подклассом NSObject в xib windowController) для получения документа, например:

-(MyDocument *)myDocument {
    MyDocument *theDocument = (MyDocument *)myWindowController;
    return theDocument;
}

Где IBOutlet в файле заголовка ссылается на myWindowController как:

IBOutlet MyWindowController *myWindowController

Вкратце - почему IBOutlet, подключенный к windowController, вместо этого получает мне документ напрямую в этой ситуации? Приведенный выше код работает, но кажется, что не должен.

Редактировать: уточнение

1 Ответ

0 голосов
/ 07 мая 2011

Хорошо, я разработал ответ на этот вопрос - не устанавливайте случайно владельца файла в xib на NSDocument вместо windowController в другой части вашего кода и забудьте, что вы сделали это!Это отменяет владельца файла, который вы ранее установили в xib.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...