NSPageController 错误转换

NSPageController bad transition

页面控制器转换有问题,看起来像这样

这是我的页面控制器的代码

class PageController: NSPageController, NSPageControllerDelegate {

    override func viewDidLoad() {
        super.viewDidLoad()

        delegate = self
        arrangedObjects = ["FirstViewController", "SecondViewController"]
    }

    func pageController(_ pageController: NSPageController, identifierFor object: Any) -> String {
        return object as! String
    }

    @IBAction func forward(_ sender: Any) {
        self.navigateForward(self)
    }

    @IBAction func back(_ sender: Any) {
        navigateBack(self)
    }

    func pageController(_ pageController: NSPageController, viewControllerForIdentifier identifier: String) -> NSViewController {
        return storyboard!.instantiateController(withIdentifier: identifier) as! NSViewController
    }

    func pageControllerDidEndLiveTransition(_ pageController: NSPageController) {
        pageController.completeTransition()
    }
}

为什么会这样,我该怎么做才能正常过渡?

当您推送新页面时,原始页面仍在视图层次结构中,因为它必须在新页面动画显示时显示。一旦新视图完全覆盖了原始视图,它就会被删除。因为第二个视图的背景是透明的,所以您仍然可以看到下面的按钮。

当您将新页面推离屏幕时,下面的视图会添加到层次结构中,因此您可以在顶部视图动画消失时看到它。因为顶视图是透明的,所以按钮会在视图动画之前出现。

如果将视图设置为不透明而不是透明,则无法通过透明背景看到下面的视图,因此它会按预期工作。