UIViewController를 category하여 ViewController를 제거하는 메소드를 추가해서 사용하고 있다.


아래에 따라 뷰 컨트롤러를 제거하는 로직이 다르므로 체크하여 분기를 태워야겠다.

  • Navigation Stack에 Push된 뷰 컨트롤러인가
  • 모달 형식으로 Present된 뷰 컨트롤러인가


아래 코드는 현재 뷰가 모달 형식인지 아닌지를 체크하는 로직이다.


- (BOOL)isModal

{

    if([self presentingViewController])

        return YES;

    if([[[self navigationController] presentingViewController] presentedViewController] == [self navigationController])

        return YES;

    if([[[self tabBarController] presentingViewController] isKindOfClass:[UITabBarController class]])

        return YES;

    

    return NO;

}



모달 형식이면 

[self dismissViewControllerAnimated:YES completion:nil];


네비게이션 스택에 푸시된 형식이면

[self.navigationController popViewControllerAnimated:YES];





Ref.

http://stackoverflow.com/questions/23620276/check-if-view-controller-is-presented-modally-or-pushed-on-a-navigation-stack

+ Recent posts