2012-01-25 5 views
1

이 사이트에 대해 많은 감사를드립니다. 최근 많은 게시물들이 나를 도왔습니다.AppDelegate의 창 닫기에 응답합니다.

이 창문은 간단하지만 나는 나의 필요를 해결할 수있는 간단한 참조를 찾을 수 없습니다. 나는 프린터를 관리하는 간단한 앱을 만들고있다. 기본 화면에는 컵 서버에서 가져온 데이터 배열에 의해 구동되는 테이블 뷰가 있습니다. 기본적으로 해당 컴퓨터에 설치된 프린터를 보여줍니다. 두 개의 하위 창이 있습니다. 각각은 자체 윈도우 컨트롤러와 nib 파일을 가지고 있습니다. 명확하게하기 위해 하위 닙 또는 하위 창 컨트롤러라고 부릅니다. 각각은 조금씩 다르지만 시스템 프린터에 영향을 미칩니다. 하위 창이 닫히고 기본 화면으로 돌아 오는 컨트롤을 반환 할 때 AppDelegate가 제어하는 ​​주 화면 창은 tableview를 다시로드하여 응답합니다 (프린터가있는 OS 수준의 모든 변경 사항을 업데이트 함).

상위 레벨에서 컨트롤러를 통해 하위 윈도우를 실행할 때 AppDelegate로 메시지를 보내는 방법을 이해할 수 없습니다. 예를 들어, 버튼이 서브 윈도우의 nib에 밀려 있고 AppDelegate에서 제어되는 ivar를 수정하고 싶습니까? 그렇게 간단해야하지만, 부모 AppDelegate의 객체 모델을 사용할 수없는 것 같습니다.

더 낮은 수준에서 AppDelegate가 창을 인식하는 방법을 잘 모르겠습니다. SubWindow 컨트롤러가 windowWillClose 알림을 통해 닫히고 있다는 사실을 알게되어 운이 좋았습니다. 서브 윈도우 컨트롤러에 서브 펜촉의 대리자를 설정할 때 작동합니다. 하지만 여전히 부모 컨트롤러 인 AppDelegate는 인식하지 못하기 때문에 AppDelegate가 하위 윈도우 컨트롤러에서 무엇인가를 수행하는 방법을 알지 못합니다.

부모 AppDelegate는 개체 메시지를 통해 인식합니까? 그렇다면 어떻게? 서브 펜촉이 다른 소유자와 위임자를 가질 수 있습니까? 두 번째 펜촉을 소유자로 컨트롤러를 가리 키도록 설정하고 대리자로 AppDelegate를 다시 가리킬 수 있습니까? 나는 그것을 시험해 보았지만 연결에서 그것을 연결하는 방법을 알아낼 수 없었다.

요약하면, 하위 컨트롤러를 통해 하위 펜촉을 닫은 후에 AppDelegate에서 조치를 취하는 방법은 무엇입니까? 도움을 주시면 감사하겠습니다.

답변

3

알림을 사용하여 AppDelegate에 조치를 취할 수 있습니다. 필요한 경우 WindowWillClose 알림과 같은 기존 알림을 사용해야 할 경우 사용자가 직접 알림을 보낼 수 있습니다. 서브 윈도우가 닫힐 때 응용 프로그램의 위임에 방법

[[NSNotificationCenter defaultCenter] addObserver:myAppDelegate 
    selector:@selector(subWindowClosed:) 
    name:NSWindowWillCloseNotification 
    object:subWindow] 

이것은 당신의 -subWindowClosed를 호출합니다 : 당신은 단순히 AppDelegate에이 같은 메시지를 수신하고자하는 NSNotification 센터를 얘기해야합니다.

+0

감사합니다. 나는이 잘못을 구현할 수 있습니다. 컨트롤러 객체를 생성 한 직후 appWriteow 메서드를 호출하기 전에이 코드를 appdelegate에 추가했습니다. 알림이 실행되지 않습니다. 대리인이 서브 펜촉에 설정된 방법과 관련된 모든 트릭? – CocoaEv

+0

nevermind :) 대단히 감사합니다. 이것을 초기화 방법으로 옮기고 각 하위 창에 대한 알림을 설정하고 훌륭하게 작동합니다. 굉장해! 감사! – CocoaEv

+0

@CocoaEv 이것은 정확히 내가하려는 것이지만 아무 소용이 없다. 정확히 어디에 넣고 어떻게 연결했는지 설명 할 수 있겠는가? 감사. –

관련 문제