从 Modal/Popover 展开 Segue,导致对 begin/end 外观转换的调用不平衡
Unwind Segue from Modal/Popover resulting in Unbalanced calls to begin/end appearance transitions
我有以下设置:
Nav Controller -> VC1 -Push--> VC2 -PopOver 或 Modal Segue--> VC3.
VC3 正在回退到 VC1。
当从 VC2 到 VC3 的 Segue 是 PopOver 和 Modal 时,展开以警告结束:Unbalanced calls to begin/end appearance transitions for UIViewController"
如果从 VC 到 VC 的 Segue 是 push,则警告消失。
知道如何消除警告或为什么会显示警告吗?
这是一个错误。忽略它(或者,如果您想成为一个好公民,请向 Apple 提交错误报告)。
我能够重现您的问题并找到解决方案!
如果展开逻辑能解决这个问题就好了。也许这是一个错误,也许不是。无论哪种方式,解决方案都是让 VC2(具有弹出窗口的控制器)成为倒带的目标,然后等待它完成出现,然后再弹出导航控制器。这确保倒带(反向弹出)动画有足够的时间在向后移动之前完成。即使关闭动画,它仍然需要等待,否则会出现错误。
您的 VC2 代码应如下所示。 (Swift)
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)
}
}
}
我有以下设置:
Nav Controller -> VC1 -Push--> VC2 -PopOver 或 Modal Segue--> VC3.
VC3 正在回退到 VC1。
当从 VC2 到 VC3 的 Segue 是 PopOver 和 Modal 时,展开以警告结束:Unbalanced calls to begin/end appearance transitions for UIViewController"
如果从 VC 到 VC 的 Segue 是 push,则警告消失。
这是一个错误。忽略它(或者,如果您想成为一个好公民,请向 Apple 提交错误报告)。
我能够重现您的问题并找到解决方案!
如果展开逻辑能解决这个问题就好了。也许这是一个错误,也许不是。无论哪种方式,解决方案都是让 VC2(具有弹出窗口的控制器)成为倒带的目标,然后等待它完成出现,然后再弹出导航控制器。这确保倒带(反向弹出)动画有足够的时间在向后移动之前完成。即使关闭动画,它仍然需要等待,否则会出现错误。
您的 VC2 代码应如下所示。 (Swift)
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)
}
}
}