从 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)
        }
    }
}