iOS:PresentViewController体系结构的popToRootViewController

iOS:PresentViewController体系结构的popToRootViewController,ios,presentmodalviewcontroller,poptoviewcontroller,Ios,Presentmodalviewcontroller,Poptoviewcontroller,我知道如果我的项目中有navigationController,我可以使用popToRootViewController,但我的整个项目都基于PresentViewController,并且有一个场景是我导航到多个级别。如果只有一个级别,我可以通过关闭当前视图控制器返回到根视图控制器,但当我下降到多个级别时,我无法确定如何导航回根视图控制器。有人能给我提个建议吗 我试图使用以下代码,但我的应用程序崩溃了 - (IBAction)mainMenuButtonPressed:(id)sender {

我知道如果我的项目中有navigationController,我可以使用popToRootViewController,但我的整个项目都基于PresentViewController,并且有一个场景是我导航到多个级别。如果只有一个级别,我可以通过关闭当前视图控制器返回到根视图控制器,但当我下降到多个级别时,我无法确定如何导航回根视图控制器。有人能给我提个建议吗

我试图使用以下代码,但我的应用程序崩溃了

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

谢谢。

如果我理解您的意思,那么您将演示几个模态viewcontroller,并希望回到根viewcontroller。如果这是正确的,那么以下代码应该适用于您:

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

如果我理解正确,那么您将演示几个模态viewcontroller,并希望回到根viewcontroller。如果这是正确的,那么以下代码应该适用于您:

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

Swift版本

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)

Swift版本

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)

你是对的!太好了!它起作用了,但我想知道,当根viewcontroller不在顶部时,为什么要解除根viewcontroller?这是因为,一旦解除根viewcontroller显示的viewcontroller,它将自动解除此根viewcontroller显示的所有模式视图控制器,依此类推。基本上,我想这只是一个递归调用。很有趣,但我不觉得任何控制器被解雇!这是我直接进入rootviewcontroller!你是对的!太好了!它起作用了,但我想知道,当根viewcontroller不在顶部时,为什么要解除根viewcontroller?这是因为,一旦解除根viewcontroller显示的viewcontroller,它将自动解除此根viewcontroller显示的所有模式视图控制器,依此类推。基本上,我想这只是一个递归调用。很有趣,但我不觉得任何控制器被解雇!这是我直接进入rootviewcontroller!