Получите доступ к экземпляру NSBox в MyDocument из другого класса? - PullRequest
0 голосов
/ 10 февраля 2011

Я начал с кода замены представлений из книги Хиллегаса «Программирование какао для 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 ];

У кого-нибудь есть идея?

1 Ответ

0 голосов
/ 14 февраля 2011

Я нашел решение.NSBox является подпредставлением ContentView.Так работает следующее:

NSWindow *w   = self.view.window;
NSArray  *va  = [[w contentView] subviews];
NSBox    *b   = [va objectAtIndex:0];
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...