iOS 이전에는 모든 모달뷰를 제거하는데 parentView를 타고 올라가서 dismiss를 하는 방법을 사용했습니다.
하지만 iOS5로 버전이 올라가면서 parentView에 직접 dismiss를 하는것이 불가능해졌습니다.
그렇기 때문에 다른 방법을 통해서 parent의 ViewController로 접근하여 [self dismissModalViewController]를 호출해야합니다.
이를 해결하기 위해 NSNotification을 사용합니다.
=== parent View Controller ===
- (void)viewDidLoad
{
[super viewDidLoad];
[[NSNotificationCenter defaultCenter] addObserver:self selector:@selector(dismiss)
name:@"BACKTOINDEXNOTE" object:nil];
}
-(void)dismiss
{
[self dismissModalViewControllerAnimated:YES];
}
위와같이 dismiss를 하고싶은 ViewController에서 NSNotificationCenter에 옵저버를 등록합니다. NotificationCenter에 신호가 post되면 dismiss라고 설정한 메서드 내의 코드를 수행하도록 했습니다.
이제 자신이 원하는 순간에 NSNotificationCenter에 등록되어있는 "BACKTOINDEXNOTE" 에 대해 post를 해줍니다.
- (IBAction)homeButton:(id)sender{
[self setModalTransitionStyle:UIModalTransitionStyleCoverVertical];
NSNotification * notification = [NSNotification notificationWithName:@"BACKTOINDEXNOTE" object:nil];
[[NSNotificationCenter defaultCenter] postNotification:notification];
}
예시에는 홈버튼을 누르면 실행되는 메서드에서 노티를 보내도록 했습니다. 이와같은 방법을 통해 iOS5에서도 복수개의 모달뷰를 제거할 수 있습니다.
'iOS' 카테고리의 다른 글
IOS 기반 어플 효과음 재생 (0) | 2012.10.22 |
---|---|
AudioService resource 해제 (0) | 2012.10.22 |
table view 2개 사용하기 (0) | 2012.10.18 |
Mime Types (1) | 2012.10.05 |
AVAudioSession의 Category가 각각 무엇을 의미하는지 궁금합니다. (0) | 2012.10.05 |