2014-03-19 4 views
1

내 스토리가 가지고있는 navigationController -> UIViewController에 1 ->의 UIViewController 2 -> UIViewController에 3 -> UITabBarController가 -> 네 UIViewControllers (A, B, C, D)iOS 복원 - 복원 할보기 전에 왜 다른보기가 표시됩니까?

I 앱으로 복원 지원을 추가하고있다. 나는 그것을 UIViewController # 1과 # 3에 추가했으며 이제 UITabBarController 아래의 UIViewController 'c'에 추가하고 있습니다.

UIViewController 'c'가 표시 될 때 Xcode를 사용하여 응용 프로그램을 종료하고 다시 응용 프로그램을 시작하면 viewcontroller의 메서드가 올바르게 호출되고 해당 UITextFields의 내용이 올바르게 복원됩니다.

하지만 'c'보기 컨트롤러에 중단 점을 배치하면 UIViewController 3이 일시적으로 표시된다는 것을 알 수 있습니다. viewDidLoad 및 viewWillAppear : 메서드가 호출됩니다.

일반적으로 UIViewController # 3이 표시되는 이유는 무엇입니까?

내 UIViewController에 대한 복원 구현을 눌러 왔으며 최종 사용자 관점에서 부작용이없는 것으로 나타났습니다. 중단 점을 사용하지 않으면 디스플레이에 업데이트가 표시되지 않습니다. 중간보기.

+0

내 쿼리와 관련이 없으며 대신이 질문에 대한 사소한 편집에 대한 쿼리가 있습니다. 영어를 읽는 데 어려움을 겪는 사람들이 약어를 이해하지 못한다고 느껴졌 기 때문에 "나는"나는 "나"라는 약어를 확장 했습니까? – Carl

+0

죄송합니다 @ Giordano-Scalzo 부주의하게 귀하의 사소한 편집을 되돌 렸습니다 (나는 당신에게 메시지를 보내기위한 경로를 찾기 위해 대부분의 링크를 시도하고있었습니다). – Carl

답변

2

보기 컨트롤러 복원 입니다. 앱이 처음부터 시작됩니다. 종료시 표시되는보기 컨트롤러에 도달하기 위해 응용 프로그램은보기 컨트롤러 만들기 순서를 루트보기 컨트롤러에서 사용자에게 표시 할보기 컨트롤러로 연결합니다. 그것은 다른 어떤 방법으로도 일어날 수 없습니다. 결국, VC2의 뒤로 버튼이 VC1로 연결되면 VC2는 탐색 컨트롤러 스택에서 VC1보다 커야합니다. 이 아니기 때문에이 발생하지 않기를 바랍니다. 시퀀스가 재구성됩니다. 복구 프로세스의 중간에 중단 점을 설정함으로써 "커튼 뒤에있는 사람"을 밝혀 냈습니다. 그러나 사용자는 프로세스를 보지 못합니다 (실행 이미지로 덮여 있음). 아무런 문제가 없습니다.

특히, viewDidLoad이 생성 순서의 바로 아래에서 올바른 순서로 호출되는 것이 중요하며, 이는 체인 아래로 순서대로 decodeRestorableStateWithCoder:을 보내기 전에 모든보기 컨트롤러에서 발생합니다.

(그러나 사용자는 viewWillAppear:과 그 사촌과 관련이있는 항목에 포함시키지 않아도됩니다. 이러한 사항은 호출 될 수도 있고 호출되지 않을 수도 있습니다. 타이밍에 관한이 불일치/viewWillAppear:은 버그이지만 Apple은 불행히도 그렇지 않습니다.)