【发布时间】:2014-09-09 11:00:34
【问题描述】:
我正在编写一个仅限 iOS 8 的应用程序,并且我正在使用新的自适应演示文稿,它结合了“显示”和“显示详细信息”segue 以及 showViewController:sender: 和 showDetailViewController:sender: 方法。
我的问题是调用showViewController:sender: 后返回的编程方式是什么?视图控制器的显示方式取决于其父上下文。例如。在 UINavigationController showViewController:sender: 中将一个新控制器推送到导航堆栈上,但如果视图控制器图中没有 UIKit 容器,那么 showViewController:sender: 最终会改为进行演示。
考虑到我可以编写自己的任意容器控制器,检查似乎不可行
if (self.navigationController) {
[self.navigationController popViewControllerAnimated:YES];
}
else if (self.presentingViewController){
...
else if ([self.parentViewController isKindOfClass:[CrazyCustomContainer class]]){
[self.parentViewController someWackyUnwindMethod];
}
...
等等...那么有没有一种通用的方法来反转显示?如果不是我看到的唯一解决方案是对所有内容使用展开segues。不太麻烦,但我很好奇。
【问题讨论】:
-
我认为部分原因是因为对于模型,您将有一个取消按钮并调用普通的
dismissViewControllerAnimated:,而对于导航控制器,它将有一个内置的后退按钮。因此,您不必经常像处理演示文稿一样处理解雇。 -
但这就是我的观点:
showViewController:可以进行推送或演示。呈现的视图控制器不应该知道它是如何在屏幕上显示的,所以在呈现的时候做类似[self.navigationController popViewControllerAnimated:]这样的事情是不好的,如果它有时会因为你被呈现而失败...... -
对于一个不需要弹出的导航控制器。它会有一个背部。
标签: ios uiviewcontroller ios8