iOS 에서 스토리보드를 사용하여 App 개발중 아래와 같은 상황이 발생하였다.
1. SettingViewController를 Present Modally로 띄움
2. SettingViewController에서 로그아웃 버튼을 누름
3. 로그아웃 절차 진행 후 LoginViewController가 나타남
4. 다시 로그인을 할 경우 모든 모달이 닫히고(이 경우 SettingViewController) RootViewController가 나타남
위와같은 케이스의 해결을 위해
[self performSegueWithIdentifier:@"LoginSegue" sender:self];가 호출된 직후
[self dismissViewControllerAnimated:true completion:nil];를 호출하거나
- (void)prepareForSegue:(UIStoryboardSegue *)segue sender:(id)sender;에서
[self dismissViewControllerAnimated:true completion:nil];를 호출했었지만,
LoginViewController 조차 뜨지 않는 상황이 발생하였다.
- (void)closeAllModal
{
UIViewController* vc = self;
while (vc) {
UIViewController* temp = vc.presentingViewController;
if (!temp.presentedViewController) {
[vc dismissViewControllerAnimated:YES completion:^{}];
break;
}
vc = temp;
}
}
위의 코드를 LoginViewController에서 실행해주면 모든 모달이 깔끔하게 다 닫힌다.
출처 : http://stackoverflow.com/questions/12849648/how-to-dismiss-all-the-modal-views
'개발 > iOS' 카테고리의 다른 글
네비게이션 바에 환경설정 버튼 올리기 (0) | 2015.01.22 |
---|---|
NSString이 null(nil)이거나 비어있는지 체크하기 (0) | 2015.01.13 |
댓글