이것은 내 질문입니다. 세 개의보기 컨트롤러 (VC1, VC2 및 VC3)가 있습니다. 전환을위한 내가 사용하는Objective-C : 루트 컨트롤러로 돌아 가면 UINavigationBar가 업데이트되지 않습니다.
self.navigationController.delegate = self;
그리고 유일한 UINavigationControllerDelegate 방법 :
이- (id<UIViewControllerAnimatedTransitioning>)navigationController:(UINavigationController *)navigationController
animationControllerForOperation:(UINavigationControllerOperation)operation
fromViewController:(UIViewController *)fromVC
toViewController:(UIViewController *)toVC {
if (operation == UINavigationControllerOperationPush || operation == UINavigationControllerOperationPop) {
myTransitionController *transitionController = [[myTransitionController alloc] init];
return transitionController;
}else{
return nil;
}
}
내 문제는 이것입니다 모든 뷰 컨트롤러 UINavigationControllerDelegate에서 상속 나는 이런 식으로 viewWillAppear 방법에 내 네비게이션 컨트롤러를 위임 : VC1에서 VC2로 걸어가 NSNotification을 트리거하는이 컨트롤러에 popViewControllerAnimated를 실행하여 이전 View Controller (VC1)로 돌아갑니다.
- (void) backToRoot: (id) sender{
[self.navigationController popViewControllerAnimated:YES];
}
이며 UINavigationBar의 모양 (뒤로 단추가없는 UINavigationBar)이 올바르게 표시됩니다. 그런 다음 VC1 VC2 때까지 VC3 걸릴 및 프로그래밍 방식으로 다시 popToRootViewController, VC3-VC2-VC1보기 전환 (VC3-VC2-VC1) VC1 때까지 이동합니다 있지만 UINavigationBar 모양 업데이트 및 다시 단추를 표시합니다 VC1 (루트보기 컨트롤러). 내가 구현 VC3의 방법은 이것이다 : 나는 popViewControllerAnimated의 이중 통화를 시도
- (void) goToRoot{
[self.navigationController popToRootViewControllerAnimated:YES];
}
, 나는 VC2로 viewWillAppear 및 viewDidAppear 방법에 추가 그것은하지 둘 다 작동하지 않습니다. 누구나 무슨 일이 일어날 지 알고 있습니까?