개발한 어플리케이션이 실행되면 제일먼저 main.m 안의 main 함수에서 UIApplicationMain이 호출되고 이어 Info.plist의 Main nib file base name에 설정된 xib가 로드됩니다. 기본적으로 자동생성되는 MainWindow.xib가 그것입니다.
열어서 File’s Owner의 delegate를 보시면 {프로젝트명}AppDelegate와(이후 TheeyeAppDelegate) 기본적으로 연결되어있는것을 알 수 있습니다.
한마디로 요약하면 UIApplicationMain을 통해 호출되는 MainWindow.xib의 Delegate는 TheeyeAppDelegate클래스 라는 것입니다.
저것은 TheeyeAppDelegate안에 정의 되어있는 메서드입니다.
이 안에서 각종 View들을 선언하고 Window에 그려내는 초기화 작업을 하게 됩니다.
하지만 다른 클래스에서 이 Delegate 클래스에 접근하고 싶을 경우에는 어떻게 해야 할까요? 다음과 같은 방법이 있습니다.
[code]TheeyeAppDelegate *delegate = [[UIApplication sharedApplication] delegate];[/code]
다음에는 하위 View에서 새로운 View를 생성후에 Window에 붙이고 자기 자신을 소거하는 방법에 대해 적어보겠습니다.
조언 : AccessDenied
참고 : http://discussions.apple.com/message.jspa?messageID=7405287
Tag: UIApplication
Categories
[iPhone] 아무 클래스에서나 UIWindow 객체 가져오기
아이폰 개발을 하다 보면 여러개의 뷰 및 컨트롤들이 겹겹이 쌓이는 형태로 개발을 하게 됩니다.
하지만 이때에 최상위에 있는 UIWindow에 접근할 일이 자꾸 생깁니다. 그럴 경우에는 다음과 같은 방법으로 하시면 됩니다.
[code]UIWindow *window = [[UIApplication sharedApplication] keyWindow];[/code]
위의 명령은 현재 눈에 보이는 화면상에서 가장 최상단에 있는 UIWindow객체를 가져오게 됩니다.
[code]NSArray *array = [[UIApplication sharedApplication] windows];[/code]
혹은 위와 같은 명령을 사용하여 어플리케이션이 가지고 있는 전체 UIWindow 리스트를 가져올 수 있습니다.
출처 : http://forums.macrumors.com/showthread.php?t=464131