개발관련/오류노트

Warning: Attempt to present < finishViewController: 0x1e56e0a0 > on < ViewController: 0x1ec3e000> whose view is not in the window hierarchy!

Rateye 2021. 11. 15. 11:01
728x90
반응형
질문 : 뷰가 창 계층 구조에없는 UIViewController에 UIViewController를 제공하려고합니다.

Xcode 4.5를 사용하기 시작했는데 콘솔에 다음 오류가 발생했습니다.

경고 : 뷰가 창 계층 구조에없는 <ViewController : 0x1ec3e000>에서 <finishViewController : 0x1e56e0a0>을 표시하려고합니다!

보기가 여전히 표시되고 앱의 모든 것이 제대로 작동합니다. iOS 6의 새로운 기능입니까?

다음은보기간에 변경하는 데 사용하는 코드입니다.

UIStoryboard *storyboard = self.storyboard;
finishViewController *finished = 
[storyboard instantiateViewControllerWithIdentifier:@"finishViewController"];

[self presentViewController:finished animated:NO completion:NULL];
답변

이 메서드를 어디에서 호출합니까? viewDidLoad 메서드 내에서 모달 뷰 컨트롤러를 제시하려고하는 문제가있었습니다. 나를위한 해결책은이 호출을 viewDidAppear: 메소드로 이동하는 것이 었습니다.

내 가정은 뷰 컨트롤러의 관점합니다 (때로드되었다는 점에서 윈도우의 뷰 계층에없는 것입니다 viewDidLoad (메시지가 전송) 만 제시 한 후이 창 계층 구조에있을viewDidAppear: 메시지 보냈다).

주의

당신이를 호출 할 할 경우 presentViewController:animated:completion:viewDidAppear: 모달 뷰 컨트롤러는 항상 제공되고, 이에 당신이 문제로 실행할 수 있습니다 때마다 뷰 컨트롤러의 뷰가 나타납니다 (이 말이!)과 모달 뷰 컨트롤러 그래서 제시되는 것은 결코 사라지지 않을 것입니다 ...

모달 뷰 컨트롤러를 표시하기에 가장 좋은 곳이 아닐 수도 있고, 프레젠테이션 뷰 컨트롤러가 모달 뷰 컨트롤러를 즉시 표시할지 여부를 결정할 수 있도록 추가 상태를 유지해야 할 수도 있습니다.

출처 : https://stackoverflow.com/questions/11862883/attempt-to-present-uiviewcontroller-on-uiviewcontroller-whose-view-is-not-in-the
728x90
반응형