2016-07-04 5 views
1

これは私の質問です。私は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方法で追加され、そうではありませんどちらも機能しません。誰でも何が起こるか考えている?

答えて

0

ドキュメントによると、funcはルートビューコントローラ以外のスタック上のすべてのビューコントローラをポップして表示を更新しますが、問題を把握することはできません。リラックスしたセグーで試してみてください、本当にシンプルです。

What are Unwind segues for and how do you use them?

関連する問題