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
'iOS > iOS 기본기' 카테고리의 다른 글
[iOS] NSObject / isa / Selector (0) | 2019.11.24 |
---|---|
[Apple Document] iOS - The App Life Cycle (0) | 2019.11.21 |
[iOS] 앱 버전 체크 (App Version Check) (0) | 2016.11.10 |
[iOS9] Search API - Core Spotlight (0) | 2016.03.01 |
[iOS] NSString 문자열 Token으로 자르기 (0) | 2016.02.03 |