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 2

1 ответ:

Из класса, в котором вы представили свой модальный вид, вызовите отклонение модального, а затем выполните селектор после некоторой задержки, а затем выполните вот пример кода

- (void) dismissAndGoToRoot {
      [self dismissViewControllerAnimated:YES completion:nil];
      [self performSelector:@selector(gotoRoot) withObject:nil afterDelay:0.50];
}

- (void)gotoRoot {

    [self.navigationController popToRootViewControllerAnimated:NO];
}