Совместное использование объекта для привязки (в частности, NSDocument) между различными представлениями / кончиками

Я пишу приложение для OSX (Lion) с использованием Xcode 4.

Ударьте немного о стену с этим, и Интернет до сих пор оказался не особенно полезным.

У меня есть определенный документ, а также файл MainMenu.xib и окно документа; Окно документа - это, конечно, то, что создается при загрузке / создании документа, и, следовательно, имеет доступ к соответствующим данным.

Я хочу максимально использовать привязки Какао в этом проекте, поэтому мой вопрос таков:

Если я создам другой View (скажем, NSViewController со связанным Nib); как мне разрешить ему доступ к данным для документа?

Я попытался добавить #import для класса документа, но это вызывает проблемы, когда я добавляю #import к классу документа в контроллер представления (чтобы создать его) - я получаю ошибки компиляции неизвестного типа.

Я также пошел по пути передачи промежуточных объектов (и даже доступа к получателям / установщикам после создания контроллера представления); наверняка должен быть лучший, более чистый путь?

В приложении есть только один NSWindowController (по умолчанию), и это все, это ваниль из шаблона приложения на основе неосновных данных XCode.

Спасибо за вашу помощь, Клинт

1 ответ

Решение

Вы должны иметь ссылку на документ какого-либо вида в других ваших классах, если вы хотите привязать к нему. Поскольку вы уже используете NSViewController Вы можете установить representedObject из NSViewController к вашему документу. Кроме того, вы могли бы подкласс NSViewController и создайте пользовательское свойство для ссылки на документ.

YourViewController* controller = [[YourViewController alloc] initWithNibName:@"YourNib" bundle:nil];
[controller setRepresentedObject:yourDocument];

В Интерфейсном Разработчике вы можете затем привязать объекты в кончике контроллера представления к Владельцу файла, используя ключевой путь representedObject.<some property of your document>,

Другие вопросы по тегам