2015-03-22 2 views
0

У меня есть подкласс NSWindowController с ассоциированным файлом xib. Из моего приложения делегат я показываю это, используя следующий код:как ссылаться на окно, связанное с nswindowcontroller

if(!wc) 
wc = [[NSWindowController alloc]initWithWindowNibName:@"MyNewWindowController"]; 

[wc showWindow:nil]; 

Это показывает окно. Теперь я хочу ссылаться на это окно в новом оконном контроллере, но не могу понять, как это сделать. В частности у меня есть кнопка на новом окне, и я хочу написать что-то вроде:

- (IBAction)doStuffAndCloseWindow:(id)sender 
{ 
    [self doSomeStuff]; 
    [*window* orderOut:nil]; 
} 

Я попытался создать переменное окно (например, созданные в AppDelegate), но компилятор говорит моя переменная окно является частным.

Так что я объявляю и ссылаюсь на окно в своем MyNewWindowController.m?

Благодаря

ответ

0

Спасибо Майклу, см. Выше, сначала объявите свой подкласский NSwindowController таким образом

@property IBOutlet MyNewWindowController *wc; 

Тогда в реализации подклассов контроллера окна, вы можете обратиться к соответствующему окну с

[[self window] .....]; 

Например

[[self window] orderOut:self]; 
0

Это было бы 'window' method of NSWindowController. Это также свойство, с которым вы можете получить доступ через «.window».

Таким образом, в первом фрагменте кода, который был бы:

[wc window]

и во втором фрагменте кода (предполагая, что "doStuffAndCloseWindow" является частью вашего подклассы NSWindowController):

- (IBAction)doStuffAndCloseWindow:(id)sender 
{ 
    [self doSomeStuff]; 
    [[self window] orderOut:nil]; 
} 
+0

Спасибо за это. Да «doStuffAndCloseWindow» является частью моего подкласса контроллера NSWindow. Код компилируется нормально, но я получаю следующее сообщение об ошибке «Не удалось подключить действие doStuffandCloseWindow: для целевого класса NSWindowController ». Я не понимаю, как владелец файла имеет тип MyNewWindowController (мой подкласс). Есть предположения? – stupot

+0

В вашем раскадровке или файле XIB вам необходимо изменить пользовательский класс вашего оконного контроллера из NSWindowController на ваш подкласс «MyNewWindowController». –

+0

Большое спасибо. Все это имеет смысл сейчас! Извините, я не могу ответить на ваш ответ, у меня пока нет достаточных знаний – stupot

Смежные вопросы