从 Modal/Popover 展开 Segue 导致开始/结束外观转换的调用不平衡
Posted
技术标签:
【中文标题】从 Modal/Popover 展开 Segue 导致开始/结束外观转换的调用不平衡【英文标题】:Unwind Segue from Modal/Popover resulting in Unbalanced calls to begin/end appearance transitions 【发布时间】:2015-11-09 14:34:18 【问题描述】:我有以下设置:
Nav Controller -> VC1 -Push--> VC2 -PopOver or Modal Segue--> VC3.
VC3 正在展开回到 VC1。
当从 VC2 到 VC3 的 Segue 是 PopOver 和 Modal 时,展开以警告结束:Unbalanced calls to begin/end appearance transitions for UIViewController"
如果从 VC 到 VC 的 Segue 是 push,则警告消失。
知道如何摆脱警告或为什么它甚至显示?
【问题讨论】:
现在仍在发生... 还是这个bug ... 【参考方案1】:这是一个错误。忽略它(或者,如果您想成为一个好公民,请向 Apple 提交错误报告)。
【讨论】:
【参考方案2】:我能够重现您的问题并找到解决方案!
如果展开逻辑能够解决这个问题,那就太好了。也许这是一个错误,也许不是。无论哪种方式,解决方案都是让 VC2(具有弹出窗口的控制器)成为倒带的目标,然后等待它完成出现,然后再弹出导航控制器。这样可以确保倒带(反向弹出)动画有足够的时间完成,然后再向后移动。即使关闭动画,它仍然需要等待,否则您会收到错误消息。
您的 VC2 代码应如下所示。 (斯威夫特)
class VC2: UIViewController
private var unwind = false
@IBAction func unwindToVC1(segue:UIStoryboardSegue)
unwind = true
override func viewWillAppear(animated: Bool)
super.viewWillAppear(animated)
if unwind
self.navigationController?.popViewControllerAnimated(false)
【讨论】:
以上是关于从 Modal/Popover 展开 Segue 导致开始/结束外观转换的调用不平衡的主要内容,如果未能解决你的问题,请参考以下文章