使用单个推动画推送和显示视图控制器

时间:2018-06-13 23:12:56

标签: ios animation uinavigationcontroller pushviewcontroller presentmodalviewcontroller

从我的导航控制器的根视图控制器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时,我会得到一个双动画(第一次推送,然后是模态)。

1 个答案:

答案 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.