弹出viewcontroller然后回到RootViewController似乎不起作用

DNe*_*ell 9 iphone objective-c ios

我有一个应用程序,在堆栈上推送四个viewcontrollers.在第四个视图控制器中,我做了一个PopViewController,所以我应该回到第三个viewcontroller,在viewWillAppear方法中,我做一个PopToRootViewController.这不会让我回到正确的第一个viewcontroller.代码很简单,只是一个

[self.navigationController pushViewController:nextController animated:YES]
Run Code Online (Sandbox Code Playgroud)

在前3个视图控制器中的每一个中,以及在第四个中

[self.navigationController popViewControllerAnimated:YES].  
Run Code Online (Sandbox Code Playgroud)

在第三个viewcontroller中,我有一个viewWillAppear方法,它执行:

[self.navigationController popToRootViewControllerAnimated:YES].
Run Code Online (Sandbox Code Playgroud)

在浏览视图时,我得到以下信息:

启动应用:

         Back:               Title: FirstLevel
Run Code Online (Sandbox Code Playgroud)

按确定:

         Back: FirstLevel    Title: SecondLevel
Run Code Online (Sandbox Code Playgroud)

按确定:

         Back: SecondLevel   Title: ThirdLevel
Run Code Online (Sandbox Code Playgroud)

按确定:

         Back: ThirdLevel    Title: FourthLevel
Run Code Online (Sandbox Code Playgroud)

按OK:弹出1然后弹回root:

         Back: FirstLevel    Title: ThirdLevel
Run Code Online (Sandbox Code Playgroud)

如果我现在按OK:

         Back: ThirdLevel    Title: SecondLevel
Run Code Online (Sandbox Code Playgroud)

如果这令人困惑,我很抱歉.我应该能够弹出一个视图控制器,然后立即弹回到根目录吗?

谢谢你的帮助.

iHS*_*iHS 9

正如Mark建议的那样,您应该使用-popToRootViewController4rth视图控制器而不是第3视图控制器,因为您的动机是将其弹出到根视图控制器.

但是如果您仍然想要出于某些匿名原因而实现此功能,那么在第3个viewcontroller中,使用:

[self.navigationController popToRootViewControllerAnimated:YES]viewDidAppear方法中,而不是viewWillAppear.

我希望它有效:)