Tag Archives: UIApplication

[iPhone] UIApplication의 delegate 클래스 가져오기

개발한 어플리케이션이 실행되면 제일먼저 main.m 안의 main 함수에서 UIApplicationMain이 호출되고 이어 Info.plistMain nib file base name에 설정된 xib가 로드됩니다. 기본적으로 자동생성되는 MainWindow.xib가 그것입니다.

열어서 File’s Ownerdelegate를 보시면 {프로젝트명}AppDelegate와(이후 TheeyeAppDelegate) 기본적으로 연결되어있는것을 알 수 있습니다.

한마디로 요약하면 UIApplicationMain을 통해 호출되는 MainWindow.xibDelegateTheeyeAppDelegate클래스 라는 것입니다.
사용자 삽입 이미지위의 라이프사이클 그림을 보시면 UIApplicationMain이 호출될 때 applicationDidFinishLaunching이 호출되는 것을 알 수 있습니다.

저것은 TheeyeAppDelegate안에 정의 되어있는 메서드입니다.

이 안에서 각종 View들을 선언하고 Window에 그려내는 초기화 작업을 하게 됩니다.

하지만 다른 클래스에서 이 Delegate 클래스에 접근하고 싶을 경우에는 어떻게 해야 할까요? 다음과 같은 방법이 있습니다.

[code]TheeyeAppDelegate *delegate = [[UIApplication sharedApplication] delegate];[/code]

다음에는 하위 View에서 새로운 View를 생성후에 Window에 붙이고 자기 자신을 소거하는 방법에 대해 적어보겠습니다.

조언 : AccessDenied
참고 : http://discussions.apple.com/message.jspa?messageID=7405287

[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