ViewController模态演示文稿未出现

时间:2017-08-09 16:13:49

标签: ios uiviewcontroller uikit modalviewcontroller

我有一个视图控制器,它是我窗口的根视图控制器的子视图控制器。该子视图控制器具有表视图,当我选择一行时,它告诉父视图控制器以模态方式呈现视图控制器。但是,模态视图控制器永远不会出现。我创建了一个裸骨测试视图控制器,只打印viewDidLoadviewWillAppear。我注意到,当我致电parentVC.present(testVC, animated:true, completion:nil)时,viewDidLoad正在运行,但viewWillAppear不是。只有在我以某种方式与UI交互时才会调用viewWillAppear。无论是攻丝,平移,滚动还是其他什么。

我花了好几个小时试图调试它。它看起来似乎没有阻止主队列,而且我已经将问题简化为无聊的问题。在我再次与UI交互之前,简单地不会调用模态呈现的视图控制器viewWillAppear

可能导致这种症状的原因是什么?

1 个答案:

答案 0 :(得分:0)

在评论中,您提到您使用

实例化视图控制器
let vc = TestVC()

其中TestVC可能是一个(基本上是空的)UIViewController子类。

视图控制器需要通过故事板场景(使用instantiateViewController),NIB创建的视图,或者在极少数情况下,您需要在loadView中创建的视图(您不应该与viewDidLoad混淆。

我建议创建一个故事板场景(假设您使用的是故事板),给它一个故事板ID,然后使用instantiateViewController

let vc = storyboard.instantiateViewController(withIdentifier: "foo")

但只是拥有一个名为UIViewController的{​​{1}}子类并用TestVC实例化它将无效。

在我们的讨论中,您说过您希望以编程方式执行此操作,不使用NIB或故事板。如果是,请使用loadView。有关示例,请参阅https://stackoverflow.com/a/37964249/1271826