从我的导航控制器的根视图控制器Root
A
B
。 (背后的想法是视图控制器A
允许编辑某些内容。如果没有创建内容,则需要首先显示视图控制器B
,这允许用户输入标题然后创建内容。)
当我在视图控制器A
的{{1}}方法中执行以下操作时:
viewDidLoad()
当if content == nil {
let createContentViewController = // instantiate new view controller instance
present(createContentViewController, animated: false)
}
设置为false时, UIKit 也会省略push
动画 - 所以我根本没有动画。当animated
设置为animated
时,我会得到一个双动画(第一次推送,然后是模态)。
答案 0 :(得分:1)
您在执行所述操作时遇到问题的原因是您无法present
在视图控制器A上查看控制器B,直到视图控制器A成为视图控制器层次结构的一部分 - 直到你推了它,它不是。
因此,我建议不要在这个故事中使用现有的视图控制器。在我看来,你真正描述的只是一个视图控制器A及其主视图(视图A),前面有一个视图B.这是您可以在创建View Controller A和推送它之间轻松准备的东西。视图B仍然可以包含一个“关闭”按钮或类似的按钮,通过将其滑出屏幕进行响应,显示视图A.
如果您确实需要View Controller B用于代码组织,那么将View Controller A作为View Controller B的自定义父视图控制器。该解决方案的一个很酷的功能是可以在故事板中配置整个事物使用嵌入segue。如果我们按下View Controller A并且您不需要View Controller B,则只需在推送之前隐藏View B.