2012-10-31 209 views
1

我的一個班級分配了一個自定義NSWindowController,我的班級如何知道窗口何時關閉?窗口關閉時檢測?

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

我試圖做的是有原始類(即分配的自定義窗口控制器之一)知道什麼時候關閉窗口,這樣我可以設置WC =零時不再需要的窗口:)

回答

4

如果您的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

+0

我沒有的'選擇[WC setDelegate:自我]'的方法不存在。我想要做的是讓原始類(分配自定義窗口控制器的類)知道何時關閉窗口,以便在不再需要窗口時可以設置「wc = nil」: – Hope4You

+0

「否則,因爲這也是一個通知,你可以註冊接收任何課程的通知。「 –

+0

感謝您的更新。我是新來的應用程序開發和代碼真的幫助! – Hope4You

0

我猜想,你既可以發送通知,或者讓你的父類CustomNSWindowController的代表。

Dietrich是對的 - 我忘了NSWindow代表協議。您可以設置父類爲窗口的委託windowController