iOS/오류 해결

[ios] presentModalViewController 호출 시 hierarchy 오류

안경 쓴 귀니 2017. 2. 3. 18:07
반응형

UINavigationViewController내의 modalView가 최상위로 올려져 있는 상태에서

다시  modalView를 호출하려고 하면 Warning 이 날 수 있다.


이는 modalView위에서 presentModalViewController를 호출해야하는데

UINavigationViewController에서 다시 호출하려고 하다 그런 문제가 생기기 때문이다


Warning: Attempt to present < TestModalViewController: 0x999999> on <MainViewController: 0x223r26> whose view is not in the window hierarchy!


위의 에러가 났을 경우에는

아마 대부분 이렇게 호출을 했을 것이다

[self presentModalViewController:test2ViewController animated:YES];



해결방법

아래와 같이

현재 최상위 화면이 NavigationViewController인지 그 안의 modalView인지에 따라서

호출 하려고 하는 대상을 변경해주면된다.

UIViewController *activeController = [UIApplication sharedApplication].keyWindow.rootViewController;

if ([activeController isKindOfClass:[UINavigationController class]])

    activeController = [(UINavigationController*) activeController visibleViewController];

else if (activeController.presentedViewController)

    activeController = activeController.presentedViewController;

                                                 

[activeController presentModalViewController:test2ViewController animated:YES];






[출처 : http://magicmon.tistory.com/173 ]

반응형