2012-10-31 7 views
1

내 수업 중 하나가 맞춤 NSWindowController을 할당합니다. 내 수업이 창을 닫으면 어떻게 알 수 있습니까?창이 닫히는 것을 감지합니까?

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

는 난 할 노력하고있어 원래 클래스 (사용자 정의 창 컨트롤러를 할당 한) 나는 화장실 설정 = nil을 할 수 있도록 창을 더 이상 필요할 때 창을 닫으면되지 않을 때 알고있을 것입니다 :)

답변

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 Reference보기 NSWindowDelegate Protocol Reference

+0

나는'의 옵션이 없습니다를 창 닫기 내부를 살펴하는 '방법은 존재하지 않습니다 . 내가 뭘 하려는지 원래 클래스 (사용자 정의 윈도우 컨트롤러를 할당하는 하나의) 창이 때 더 이상 필요하지 않을 때'wc = nil' 설정할 수 있도록 창이 닫힙니다 알고있다 :) – Hope4You

+0

"그렇지 않으면 이것은 알림이기 때문에 등록하면 모든 클래스에서 알림을받을 수 있습니다. " –

+0

업데이트 주셔서 감사합니다. 저는 앱 개발에 익숙하지 않고 코드가 정말 도움이됩니다! – Hope4You

0

난 당신이 알림을 보내거나 귀하의 부모 클래스 CustomNSWindowController의 대리자를 만들 수 중 하나를 추측한다.

[편집] Dietrich가 맞습니다. NSWindow 위임 프로토콜을 잊어 버렸습니다. 당신의 윈도우의 대리인으로 상위 클래스를 설정할 수 windowController

0
관련 문제