實現檢視控制器一次 dismissViewController 兩個檢視控制器
阿新 • • 發佈:2019-02-20
如,從 rootViewControlle(presentViewControlle)到 ViewControlle1,再從ViewControlle1(presentViewControlle)到 ViewControlle2。現在實現從(ViewControlle2)直接dismissViewControlle 到 rootViewControlle
1. dismiss兩個檢視控制器的按鈕方法該檢視控制器(ViewControlle2)是上個檢視控制器(ViewControlle1) presentViewControlle 的控制器
- (void)dismissButton:(UIButton *)sender { // 當本檢視控制器dismiss 完成後註冊通知,名為“dismiss” [self dismissViewControllerAnimated:NO completion:^{ [[NSNotificationCenter defaultCenter] postNotificationName:@"dismiss" object:self]; }]; }
2. 在 ViewControlle1.m 中的 viewWillAppear: 方法中監測上一個檢視控制器dismissViewControlle的通知,監測到之後就執行dismissSelf: 裡的方法
- (void)viewWillAppear:(BOOL)animated { NSNotificationCenter *notification = [NSNotificationCenter defaultCenter]; [notification addObserver:self selector:@selector(dismissSelf:) name:@"dismiss" object:nil]; }
3.得到通知執行的方法,讓 ViewControlle1 dismissViewControlle到rootViewControlle
- (void)dismissSelf:(NSNotificationCenter *)notification
{
[self dismissViewControllerAnimated:NO completion:^{
[[NSNotificationCenter defaultCenter] removeObserver:self name:@"dismiss" object:nil];
}];
}
4.移除通知,可以在
- (void)viewDidDisappear:(BOOL)animated
{
[[NSNotificationCenter defaultCenter] removeObserver:self name:@"dismiss" object:nil];
}
移除通知的地方自己可以根據自己的專案而用,該什麼時候移除、在哪個方法中移除等考慮