如何从模态视图中返回到根视图控制器?

5

我有一个典型的UITableViewController视图集。在所有视图上都有一个按钮,点击会弹出一个模态视图。在该设置视图上有一个按钮。我希望该按钮可以关闭模态视图并执行UITableViewController的navigationController上的popToRootViewController操作。

关闭模态视图很容易:

[self dismissModalViewControllerAnimated:NO];

这很好用。我尝试过使用以下方法弹出主要的UITableViewController:

[self.parentViewController.navigationController popToRootViewControllerAnimated:NO];

什么也没有发生。

我可能可以实现一个代理来使这件事发生,但有很多视图控制器都有相同的设置按钮(而且会有更多),因此最好找到一种不需要在每个视图控制器中添加额外代码的解决方案。

非常感谢!

5个回答

7
请查看rdelmal的回答(https://dev59.com/j2Qo5IYBdhLWcg3wG8SE#16311935),这对我非常有效。我在模态视图中使用此代码的操作。
[(UINavigationController *)self.presentingViewController  popToRootViewController:NO];
[self dismissViewControllerAnimated:YES completion:nil];

1

找不到类似的解决方案,所以我实现了一个协议/代理,它运行良好。只需:

[self.navigationController popToRootViewControllerAnimated:NO];

在委托调用中。


1
在您的AppDelegate文件中添加一个方法。
-(void)GotoRoot{
[self.navigationController popToRootViewControllerAnimated:YES];}

现在在您的类中在注销按钮上调用它。
[self dismissModalViewControllerAnimated:NO];
[(TestAppDelegate *)[[UIApplication sharedApplication] delegate]) GotoRoot];

请还原它的结果;

1

尝试

[[[[UIApplication sharedApplication].keyWindow] rootViewController] popToRootViewController:YES];

缺少navigationController(因此无法编译),但即使将其添加为[[[[UIApplication sharedApplication] .keyWindow rootViewController] navigationController] popToRootViewControllerAnimated:YES];,它也可以编译但不起作用。 - Mitch Cohen

0

这对我有效

[[self parentViewController] popToRootViewControllerAnimated:NO]

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接