2016-07-04 2 views
1

이것은 내 질문입니다. 세 개의보기 컨트롤러 (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 방법에 추가 그것은하지 둘 다 작동하지 않습니다. 누구나 무슨 일이 일어날 지 알고 있습니까?

답변

0

설명서에 따르면 func은 루트보기 컨트롤러를 제외하고 스택의 모든보기 컨트롤러를 팝하고 디스플레이를 업데이트하지만 문제를 파악할 수는 없습니다. 긴장을 푸는 시도는 정말 간단합니다.

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

관련 문제