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
반응형