【发布时间】:2018-06-07 16:14:40
【问题描述】:
for _ in 2...numNavControllers {
let vc = navigationController?.popViewController(animated: true)
print("\(String(describing: vc))")
}
我正在尝试弹出多个视图控制器,而正在发生的是循环的第一次迭代,它将成功弹出顶部视图控制器,但之后的每次迭代都弹出视图控制器为零。这是怎么回事?有多个视图控制器(至少 4 个),我已经通过 print 语句确认了这一点。
谢谢!
【问题讨论】:
-
为什么要循环执行此操作?为什么不根据需要使用
popToRootViewController或popToViewController? -
使用这些功能在我的应用程序中出现奇怪的错误,尝试弹出到根目录然后立即推送新控制器会导致奇怪的 UI 错误,新控制器出现在来自底部的新屏幕中屏幕(而不是通常的动画从左到右),然后新屏幕缺少整个导航栏...
-
所以这和your previous question有关。
-
好吧,我从不同的角度接近它,想知道是否有人能告诉我为什么多个 pop 调用返回 nil
-
您还设置了动画:true,因此完成第一次弹出需要一段时间。但你不是在等待弹出下一个。弹出第一个时,您不能弹出第二个。根据您在下面的评论,您可以使用
popToRootViewController并在不制作动画的情况下推送相关的 VC。 (您可能需要使用 DispatchQueue 使用单独的线程)
标签: ios swift uiviewcontroller