我如何引用与 nswindow 控制器关联的 window

how do i reference the window associated with a nswindowcontroller

我有一个 NSWindowController 的子类和一个关联的 xib 文件。 在我的应用程序委托中,我使用以下代码显示它:

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

[wc showWindow:nil];

这显示 window。现在我想在新的 window 控制器中引用 window,但不知道如何引用。具体来说,我在新 window 上有一个按钮,我想写这样的东西:

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

我试过创建一个 window 变量(就像在 appdelegate 中创建的那样)但是编译器说我的 window 变量是私有的。

那么我是否在 MyNewWindowController.m 中声明并引用了 window?

谢谢

那就是 'window' method of NSWindowController。它也是一个 属性,您可以通过“.window”访问。

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

[wc window]

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

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

感谢 Michael,见上文,首先声明你的子类 NSwindowController

@property IBOutlet MyNewWindowController *wc;

然后在子类window控制器的实现中,可以引用关联的window和

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

例如

[[self window] orderOut:self];