我如何引用与nswindowcontroller关联的窗口

时间:2015-03-22 02:52:07

标签: macos nswindow nswindowcontroller

我有一个NSWindowController子类,带有一个关联的xib文件。 从我的app委托中,我使用以下代码显示:

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

[wc showWindow:nil];

显示窗口。现在我想在新窗口控制器中引用该窗口,但无法确定如何。具体来说,我在新窗口上有一个按钮,我想写一些类似的东西:

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

我已经尝试创建一个窗口变量(就像在appdelegate中创建的那个),但编译器说我的窗口变量是私有的。

我应该在MyNewWindowController.m

中声明和引用一个窗口

由于

2 个答案:

答案 0 :(得分:0)

那将是'window' method of NSWindowController。它也是您可以通过“.window”访问的属性。

因此,在第一个代码段中,那将是:

[wc window]

并在第二个代码片段中(假设“doStuffAndCloseWindow”是您的子类NSWindowController的一部分):

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

答案 1 :(得分:0)

感谢Michael,请参见上文,首先声明您的子类NSwindowController

@property IBOutlet MyNewWindowController *wc;

然后在子类窗口控制器的实现中,您可以使用

引用关联的窗口
[[self window] .....];

例如

[[self window] orderOut:self];