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