iOS: popToRootViewController для существующей архитектуры ViewControllers - PullRequest
2 голосов
/ 28 марта 2012

Я знаю, что могу использовать popToRootViewController, если у меня есть навигационный контроллер в моем проекте, но весь мой проект основан на presentViewControllers, и есть сценарий, когда я перехожу на несколько уровней. Если есть только один уровень, я могу вернуться к корневому контроллеру представления, отказавшись от текущего контроллера представления, но я не могу понять, как перейти обратно к корневому контроллеру представления, когда я перешел на более чем один уровень. Может кто-нибудь, пожалуйста, посоветуйте мне здесь?

Я пытался использовать следующий код, но мое приложение зависало!

- (IBAction)mainMenuButtonPressed:(id)sender {
    MyAppDelegate *delegate = (MyAppDelegate *)[[UIApplication sharedApplication] delegate];
    [self presentModalViewController:delegate.window.rootViewController animated:YES];
}

Спасибо.

Ответы [ 2 ]

4 голосов
/ 28 марта 2012

Если я вас правильно понял, вы представляете несколько модальных контроллеров представления и хотите вернуться к корневому контроллеру представления. Если это так, то следующий код должен работать для вас:

- (IBAction)mainMenuButtonPressed:(id)sender {
    MyAppDelegate *delegate = (MyAppDelegate *)[[UIApplication sharedApplication] delegate];
    [delegate.window.rootViewController dismissModalViewControllerAnimated:YES];
}
0 голосов
/ 30 октября 2015

Swift Version

var = APP_DELEGATE = UIApplication.sharedApplication().delegate as! AppDelegate
APP_DELEGATE.window?.rootViewController?.dismissViewControllerAnimated(true, completion: nil)

Swift3

let APP_DELEGATE = UIApplication.shared.delegate as! AppDelegate
            APP_DELEGATE.window?.rootViewController?.dismiss(animated: true, completion: nil)
...