2

私のクラスの 1 つが custom を割り当てNSWindowControllerます。私のクラスは、ウィンドウがいつ閉じられるかをどのように知ることができますか?

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

私がやろうとしているのは、元のクラス (カスタム ウィンドウ コントローラーを割り当てるクラス) に、ウィンドウがいつ閉じられるかを知らせて、ウィンドウが不要になったときに wc = nil を設定できるようにすることです:)

4

3 に答える 3

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 クラス リファレンスNSWindowDelegate プロトコル リファレンスを参照してください。

于 2012-10-31T17:56:27.583 に答える
0

通知を送信するか、親クラスを CustomNSWindowController のデリゲートにすることができると思います。

[編集] - ディートリッヒの言うとおりです - NSWindow デリゲート プロトコルのことを忘れていました。親クラスを windowController のウィンドウのデリゲートとして設定できます

于 2012-10-31T17:57:38.620 に答える
0

デリゲート- (BOOL)isWindowLoadedを使用して、閉じているかどうかを確認します:
このデリゲートのドキュメント https://developer.apple.com/library/mac/#documentation/Cocoa/Reference/ApplicationKit/Classes/NSWindowController_Class/Reference/ Reference.html

また、閉じるウィンドウの中を見てみたい場合

https://developer.apple.com/library/mac/#documentation/Cocoa/Reference/ApplicationKit/Classes/NSWindowController_Class/Reference/Reference.html

于 2012-10-31T18:11:38.107 に答える