iOS2012. 10. 22. 13:37

 iOS 이전에는 모든 모달뷰를 제거하는데 parentView를 타고 올라가서 dismiss를 하는 방법을 사용했습니다.

하지만 iOS5로 버전이 올라가면서 parentView에 직접 dismiss를 하는것이 불가능해졌습니다.

그렇기 때문에 다른 방법을 통해서 parent의 ViewController로 접근하여 [self dismissModalViewController]를 호출해야합니다.

이를 해결하기 위해 NSNotification을 사용합니다.


 === parent View Controller ===

- (void)viewDidLoad

{

    [super viewDidLoad];

    [[NSNotificationCenter defaultCenteraddObserver: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 defaultCenterpostNotification: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
Posted by 다오나무