我的页面控制器转换有问题,看起来像这样
这是我的页面控制器的代码
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()
}
}
为什么它看起来像这样,我该怎么做才能实现正常过渡?
答案 0 :(得分:3)
当您推送新页面时,原始页面仍然在视图层次结构中,因为必须在新页面设置为视图时显示该页面。一旦新视图完全覆盖原始视图,它将被删除。因为第二个视图上有透明背景,所以仍然可以看到下面的按钮。
当您将新页面从屏幕上移开时,下面的视图会添加到层次结构中,以便您可以将其视为顶视图的动画效果。由于顶视图是透明的,因此按钮会在视图动画之前显示。
如果您使视图不透明而不是透明,则无法通过透明背景看到下面的视图,因此它可以按预期工作。