窗户关闭时检测?

时间:2012-10-31 17:53:13

标签: objective-c cocoa class window nswindowcontroller

我的一个类分配了一个自定义NSWindowController,我的班级怎么知道窗口何时关闭?

CustomNSWindowController *wc = [[CustomNSWindowController alloc] init];
[wc showWindow:self];
//how to detect when window is closed?

我要做的是让原始类(分配自定义窗口控制器的类)知道窗口何时关闭,以便在不再需要窗口时设置wc = nil:)

3 个答案:

答案 0 :(得分:5)

如果您的NSWindowController课程设置为窗口代理,则只需回复-windowWillClose:方法。

- (void)windowWillClose:(NSNotification *)notification
{
    /* ... */
}

否则,由于这也是一个通知,您可以注册接收来自任何班级的通知。

- (void)myWindowWillClose:(NSNotification *)notification
{
    /* ... */
}

...
CustomNSWindowController *wc = ...;
[[NSNotificationCenter defaultCenter]
    addObserver:self
    selector:@selector(myWindowWillClose:)
    name:NSWindowWillCloseNotification
    object:[wc window]];
[wc showWindow:self];

请参阅NSWindow Class ReferenceNSWindowDelegate Protocol Reference

答案 1 :(得分:0)

我猜你可以发送通知,或者让你的父类成为CustomNSWindowController的委托。

[编辑] - 迪特里希是对的 - 我忘记了NSWindow代表协议。您可以将父类设置为windowController窗口的委托

答案 2 :(得分:0)