Вопрос о контроллере какао - PullRequest
0 голосов
/ 03 апреля 2011

У меня есть приложение для двух окон.Первое - окно по умолчанию.Второй создается с помощью пользовательского контроллера:

CCCVentanaBloqueo *ctrl = [[CCCVentanaBloqueo alloc] initWithWindowNibName:@"VentanaBloqueo"];
CCWVentanaBloqueo *ventana = (CCWVentanaBloqueo*)[ctrl window];

ventana содержит одну метку, подключенную к одной CCCVentanaBloqueo розетке контроллера через XCode IB.Если я попробую два изменить эту розетку из главного окна через CCCVentanaBloqueo розетка контроллера, никаких изменений не будет.

Я вижу, что розетка имеет нулевое значение.Я также вижу, что два CCCVentanaBloqueo объекта создаются (два вызова функции awakeFromNib), когда выполняется строка [ctrl window].

Полагаю, * ctrl ссылается на неправильный контроллер, но я незнаете, почему создаются два контроллера.

Знаете почему?Есть ли другой способ внести изменения в не главное окно из контроллера основного окна?

1 Ответ

0 голосов
/ 03 апреля 2011

Объявите второй оконный контроллер как переменную экземпляра вашего контроллера приложения и сделайте его свойством. Затем вы можете легко отправлять сообщения на его IBOutlets (при условии, что они также являются свойствами) через appDelegate.

Допустим, у вас будет окно A, отправляющее окно B сообщение. В контроллере Window A у вас может быть такой метод:

- (IBAction)messageWindowB:(id)sender {

       myAppDelegate *appDelegate = [NSApplication sharedApplication] delegate];
       [appDelegate.windowB.theView doSomething];

}

Честно говоря, я не уверен, полностью ли я понял ваш вопрос. Кроме того, это быстрый и грязный подход. Так что, если у кого-то есть предложения, пожалуйста, будьте моим гостем!

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