これは私の質問です。私は3つのView Controller(VC1、VC2、VC3)を持っています。すべてのビューコントローラがUINavigationControllerDelegateから継承されたと私は、このようにviewWillAppearメソッドに私のナビゲーションコントローラを委任: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;
}
}
私の問題はこれです:私はVC1からVC2に歩いて、このコントローラにNSNotificationをトリガすると、前のView Controller(VC1)に戻るためにpopViewControllerAnimatedを実行します。
- (void) backToRoot: (id) sender{
[self.navigationController popViewControllerAnimated:YES];
}
とUINavigationBarショー正しくその外観(バックボタンなしUINavigationBar):これは、コードです。その後、VC1からVC2までVC3まで歩き、popToRootViewControllerを使ってVC1まで戻ってくると、ビュー(VC3-VC2-VC1)の遷移は完全に動作しますが、UINavigationBarの外観は更新されず、 VC1(ルートView Controller)にあります。私が実装VC3のメソッドはこれです:私はpopViewControllerAnimatedの二重のコールで試してみました
- (void) goToRoot{
[self.navigationController popToRootViewControllerAnimated:YES];
}
が、私はVC2にviewWillAppearとviewDidAppear方法で追加され、そうではありませんどちらも機能しません。誰でも何が起こるか考えている?