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 ]
'iOS > 오류 해결' 카테고리의 다른 글
[iOS] ERROR ITMS-90339: UIApplicationExitsOnSuspend Error 해결 방법 (0) | 2021.04.04 |
---|---|
[iOS] App Store Connect 입력한 주소가 유효하지 않습니다. 해결 방법 (8) | 2020.12.30 |
[iOS] App Store Connect Operation Error 해결방법 (0) | 2020.12.13 |
[iOS] Content and frame layout guides before iOS 11.0 에러 해결 방법 (0) | 2020.12.11 |
[Xcode] linker command failed with exit code 1 (use -v to see invocation) 에러 해결 (0) | 2017.04.10 |