ViewController Modal Presentation没有出现
我有一个视图控制器,它是我的窗口的根视图控制器的子视图控制器。该子视图控制器具有表视图,当我选择一行时,它告诉父视图控制器以模态方式呈现视图控制器。但是,模态视图控制器从不出现。我创建了一个裸露的骨骼测试视图控制器,仅打印viewDidLoad
和viewWillAppear
。我注意到的是,当我拨打parentVC.present(testVC, animated:true, completion:nil)
时,viewDidLoad
运行,但viewWillAppear
不是。当我以某种方式与UI进行交互时,才会调用viewWillAppear
。无论是点击,平移,滚动或其他。ViewController Modal Presentation没有出现
我花了数小时试图调试。看起来主队似乎并没有被阻挡,我已经将问题减少到了最基本的状态。直到我再次与UI交互之前,模态呈现的视图控制器的viewWillAppear
根本不会被调用。
什么可能导致此症状?
在评论,你提到你与
let vc = TestVC()
其中TestVC
大概是一个(主要是空的)UIViewController
子类的实例化视图控制器。
视图控制器需要或者通过或者故事板的场景(使用instantiateViewController
)创建的视图,笔尖或在极少数情况下,您在loadView
创建一个视图(你不应该与viewDidLoad
混淆)。
我建议创建一个故事板场景(假设你使用故事板),给它一个故事板ID,然后用instantiateViewController
:
let vc = storyboard.instantiateViewController(withIdentifier: "foo")
但仅仅有一个UIViewController
子类,称为TestVC
并用它实例TestVC()
将无法正常工作。
在我们的讨论中,你说你想以编程的方式做到这一点,没有NIB或故事板。如果是这样,请使用loadView
。一个例子见https://stackoverflow.com/a/37964249/1271826。
我们应该能够在没有代码的情况下猜出这个吗? –
你可能已经在dispatch asynch队列中设置了这个'parentVC.present(testVC,animated:true,completion:nil)'。分享你的代码。 – Krunal
@Rob主队列是我想到并检查的第一件事情。我把这个断言放在了好的位置,并且没有例外。它的主线。 –