iOS вернулось в корень файле ViewController в режимное и оборудованием для UIViewController
У меня есть структура о навигации и многие страницы имеют модальный (popup) на uiviewcontroller (UINavigationController).
Когда я отключаю bluetooth, мне нужно вернуться к корню viewcontroller.
Поэтому я установил dismiss и popToRoot в методе disconnect
-(void) disconnect
{
....
[appDelegate.window.rootViewController dismissViewControllerAnimated:NO completion:nil];
NSLog(@"appDelegate.window.rootViewController:%@",appDelegate.window.rootViewController.class);
// show log appDelegate.window.rootViewController:UINavigationController
[appDelegate.window.rootViewController.navigationController popToRootViewControllerAnimated:YES];
....
}
Но когда я запускаю программу и отключаю bluetooth,
В случае 1: модальное отображение viewcontroller,
Он уволит модальный viewcontroller, увольнение было правильный.
Но нет возврата к корневому навигационному контроллеру после увольнения модального viewcontroller.
В case2: только на странице uinavigation controller.
Когда я отключаю bluetooth, нет возврата к корневому навигационному контроллеру.
Как вернуться на корневую страницу навигации?где мои неудачи?
Большое вам спасибо.
// ------ Ответ -------
Изменить код на
[appDelegate.window.rootViewController dismissViewControllerAnimated:NO completion:nil];
[self performSelector:@selector(gotoRoot) withObject:nil afterDelay:0.50];
- (void) gotoRoot {
UINavigationController *myNavCon = (UINavigationController*)appDelegate.window.rootViewController;
[myNavCon popToRootViewControllerAnimated:YES];
}
1 ответ:
Из класса, в котором вы представили свой модальный вид, вызовите отклонение модального, а затем выполните селектор после некоторой задержки, а затем выполните вот пример кода
- (void) dismissAndGoToRoot { [self dismissViewControllerAnimated:YES completion:nil]; [self performSelector:@selector(gotoRoot) withObject:nil afterDelay:0.50]; } - (void)gotoRoot { [self.navigationController popToRootViewControllerAnimated:NO]; }