2011-03-09 2 views
7

특정 UIViewController에 도착했을 때 사용자가 UINavigationController에서 뒤로 버튼을 누르면 작업을 수행하려고합니다.UINavigationController에서 팝업보기 알림받는 방법?

불행히도 UINavigationControllerDelegate에는보기가 튀어 나오는 것을 알리는 방법이 없습니다.

해결 방법으로 이 YES 일 때만 조치가 취해졌습니다. 조치는 현재 viewDidDisappear입니다. 이것은 효과가 있지만 약간 추한 것입니다.

어떻게해야합니까?

+0

사용 viewWillDisappear을 통해 UR 조치를 u는 당신이 UITabBarController가있는 경우, 당신은이 솔루션으로 인해를 사용해야합니다 –

답변

0

viewWillDisappear 때 대리자 메서드를 호출하거나 특정 UIViewController에 대해 viewWillAppear에서 논리를 설정할 수 있습니다. 당신은 스택 아래로 컨트롤러에 대한 참조가있는 경우

4

이 하나가 튀어 때 표시됩니다 하나는, 당신은 대리인으로 등록하고 취급

navigationController:willShowViewController:animated: 
14

가장 인기있는 방법을 통해 그것을 확인하실 수 있습니다 내비게이션보기 컨트롤러 (모달뿐만 아니라)의 팝업은보기 컨트롤러에 viewWillDisappear을 구현합니다.

- (void)viewWillDisappear:(BOOL)animated { 
    [super viewWillDisappear:animated]; 

    if (self.isMovingFromParentViewController || self.isBeingDismissed) { 
     // This view controller is being popped or dismissed 
    } 
} 
1

당신이 UINavigationControllerDelegate으로 관찰하고 전환이 일어난 것인지 확인할 수 있습니다

- (void)navigationController:(UINavigationController *)navigationController 
      willShowViewController:(UIViewController *)viewController 
         animated:(BOOL)animated 
    { 
     if([navigationController.viewControllers containsObject:self]) 
     { 
      NSLog(@"push"); 
     } 
     else 
     { 
      NSLog(@"pop"); 
     } 
    } 
+0

을 알고 이전하려는 경우 현재 탭 인덱스를 변경할 때마다 viewWillDisappear가 호출됩니다. – FouZ

관련 문제