我有一个导航控制器。我先推了一个VC,然后介绍了12个模态VC。现在我想弹出到根视图控制器。我怎样才能做到这一点?请帮帮我。
6 回答
您将需要关闭您呈现的 12 个模态视图。popViewController 或 popToRootViewController 将不起作用。
关闭您的模态视图以进入根视图。
抱歉,我不确定我是否正确理解了您的问题。但是 UINavigationController 的
- (NSArray *)popToRootViewControllerAnimated:(BOOL)animated
你在搜索什么?
如果您有导航控制器并希望享受在单个命令中弹出多个级别的好处,那么您应该使用pushViewController
(或推送转场)而不是presentViewController
(或模态转场)。
正如其他人指出的那样,如果您正在纠正对后续控制器的推送,那么您可以通过以下方式弹出:
[self.navigationController popToRootViewControllerAnimated:YES];
告诉推送的 VC 到dismissViewControllerAnimated:completion:
. 这将解雇所有提交的 VC。现在您可以弹出推送的 VC。
在 AppDelegate 的实例变量中保留第一个 NavigationController。在 AppDelegate.h
@property (nonatomic, retain) UINavigationController *navigationControllerFirst;
在 RootViewController viewDidLoad 中添加以下内容。
- (void)viewDidLoad
{
[super viewDidLoad];
// Do any additional setup after loading the view, typically from a nib.
AppDelegate *app = (AppDelegate *)[[UIApplication sharedApplication] delegate];
app.navigationControllerFirst = self.navigationController;
}
然后,为了实现你想要的,在第 12 个呈现的模式中添加以下函数以返回到 RootViewController。
- (IBAction)GoToHome:(id)sender {
AppDelegate *app = (AppDelegate *)[[UIApplication sharedApplication] delegate];
[app.navigationControllerFirst dismissViewControllerAnimated:YES completion:^{
[app.navigationControllerFirst popToRootViewControllerAnimated:YES];
}];
}