我的一个类分配了一个自定义NSWindowController
,我的班级怎么知道窗口何时关闭?
CustomNSWindowController *wc = [[CustomNSWindowController alloc] init];
[wc showWindow:self];
//how to detect when window is closed?
我要做的是让原始类(分配自定义窗口控制器的类)知道窗口何时关闭,以便在不再需要窗口时设置wc = nil:)
答案 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 Reference,NSWindowDelegate Protocol Reference
答案 1 :(得分:0)
我猜你可以发送通知,或者让你的父类成为CustomNSWindowController的委托。
[编辑] - 迪特里希是对的 - 我忘记了NSWindow代表协议。您可以将父类设置为windowController窗口的委托
答案 2 :(得分:0)
使用委托 - (BOOL)isWindowLoaded 来检查它是否关闭:
到该代表的文档
https://developer.apple.com/library/mac/#documentation/Cocoa/Reference/ApplicationKit/Classes/NSWindowController_Class/Reference/Reference.html
如果您喜欢在关闭窗口内查看