Ios UINavigationController.set​;视图​;控制器将生成空的ViewController阵列

Ios UINavigationController.set​;视图​;控制器将生成空的ViewController阵列,ios,swift,uinavigationcontroller,Ios,Swift,Uinavigationcontroller,我正在使用集合​看法​UINavigationController上的Controllers函数用于设置我的第一个根视图控制器,但调用后,viewControllers数组为空 我知道设置后立即在viewControllers数组中查看视图控制器是一种预期行为,即使存在动画,因此我不确定是什么原因导致了问题 setViewController([viewControllerToPresent],动画:true) 值得注意的是:这发生在应用程序启动时,但在我确定UINavigationContro

我正在使用
集合​看法​UINavigationController上的Controllers
函数用于设置我的第一个根视图控制器,但调用后,
viewControllers
数组为空

我知道设置后立即在
viewControllers
数组中查看视图控制器是一种预期行为,即使存在动画,因此我不确定是什么原因导致了问题

setViewController([viewControllerToPresent],动画:true)


值得注意的是:这发生在应用程序启动时,但在我确定UINavigationController已加载并准备就绪之后。

当navigationcontroller试图将viewcontroller推送到堆栈上(两个都是动画的)时,问题最终以尝试同时以模态方式呈现viewcontroller(教程幻灯片)而告终

通过将模态的呈现延迟1秒,两个视图控制器都能够在不相互碰撞的情况下呈现


如果有人对UIKit和动画API足够熟悉,想知道为什么会这样。如果我没有收到任何人的回复,我将接受我自己的答案,但如果我们将来得到更好的答案,我将很乐意更改此答案。

我们可以看一些代码吗?谢谢您的帮助。这真的很难显示任何简洁的代码。它需要的是对古怪的UIKit行为有一个强有力的基本理解。如果您对UIKit的行为方式有更多了解,请参阅下面的答案。干杯即使是“对古怪的UIKit行为有很强的基本理解”的人也无法读懂你的心思并解决一个没有完全解释的问题。例如,您下面的解决方案提到了一个模态问题,但您的问题没有注意到模态表示(更不用说多个视图控制器)甚至是等式的一部分。对于我们这些试图帮助您的人来说,几行代码可以大有帮助。只是要记住一些事情。@nickgraef谢谢,如果我的语气变得刺耳,我会道歉。这两个相互影响的部分最终相距如此之远,我根本不知道如何暗示这一点。但我确实更新了我的答案,加入了一行,清楚地表明这是一个失败的动画SetViewController,这是相关的。干杯