Я начал с кода замены представлений из книги Хиллегаса «Программирование какао для MAC OS X». Этот код использует всплывающее меню в MyDocument.nib для замены ViewControllers с помощью displayViewController в MyDocument.m, частично показанном ниже. Вместо этого я пытаюсь использовать строки таблицы в ViewController для замены ViewController, вызывая displayViewController в MyDocument.m из ViewController, который сгенерировал таблицу:
- (void)displayViewController:(ManagingViewController *)vc
curBox: (NSBox *)windowBox
{
// End editing
NSWindow *w = [windowBox window];
BOOL ended = [w makeFirstResponder:w];
if (!ended) {
NSBeep();
return;
}
...
Проблема, с которой я сталкиваюсь, заключается в том, что когда я вызываю displayViewController из другого ViewController, мне нужно отправить экземпляр NSBox, созданный с помощью Interface Builder, в MyDocument.nib, чтобы представление могло быть заменено внутри NSBox в MyDocument.m. Для этого мне нужно иметь доступ к экземпляру NSBox, созданному с помощью Interface Builder, в MyDocument.nib из другого ViewController.
Кто-нибудь знает, как получить доступ к экземпляру NSBox, созданному с помощью Interface Builder, в MyDocument.nib из другого ViewController?
EDIT:
Я добился определенного прогресса. Иерархия представления:
Window
ContentView
NSBox
Мне удалось получить окно верхнего уровня и текущий ContentView со следующим:
NSWindow *w = self.view.window;
NSView *v = [w contentView];
но я все еще не понял, как получить NSBox, который находится в ContentView. Я пробовал следующее, но они не работали:
NSBox *b = [v container];
NSBox *b = [v content ];
У кого-нибудь есть идея?