使用动画推送视图控制器会冻结UI

时间:2018-05-24 00:00:08

标签: ios swift xcode viewcontroller pushviewcontroller

我试图多次推送同一类型的视图控制器,如果我在推送中使用动画,则UI会在pushController之后冻结。

示例:我在一个ProductController中,我将pushViewController发送到另一个ProductController,之后UI冻结。

Xcode显示以下错误: *"[Snapshotting] Snapshotting a view (0x7fdd9a5bdba0, UIView) that has not been rendered at least once requires afterScreenUpdates:YES."*

为了避免UI冻结,我必须做一个pushController设置animated:false。

self.navigationController?.pushViewController(productController, animated: false)

有什么想法解决这个问题?

1 个答案:

答案 0 :(得分:0)

您是否想知道为什么此代码不起作用?

self.navigationController?.pushViewController(productController, animated: true)
self.navigationController?.popViewController(animated: true)

如果使用animated = true,该函数会在下一次通过应用程序事件循环时排队推动视图控制器的操作。它不会马上发生。

然后,在下一行中,您要求弹出视图控制器,即使它尚未开始推送它。

TL; DR:

不要那样做。

然而,更重要的问题是为什么你会推动然后立即弹出一个视图控制器?这似乎毫无意义。