NSPageController,如果在 animator() 中使用了 selectedIndex,则 autoresizingMask 无效

NSPageController, If selectedIndex is used at animator(), autoresizingMask has no effect

如果在 animator() 中使用了 selectedIndex,则 autoresizingMask 无效。
如果你不使用 animator(),你很好。
无法使用 animator() 手动执行 selectedIndex。

知道的请告诉我

来源

let array = ["page 1", "page 2", "page 3", "page 4", "page 5", "page 6"]

class PageController: NSPageController, NSPageControllerDelegate {

    @IBAction func moveThreePage(_ sender: Any) {
        // NG
        self.animator().selectedIndex = 2

        // OK
        //self.selectedIndex = 2
    }

    override func viewDidLoad() {
        super.viewDidLoad()
        self.delegate = self
        self.arrangedObjects = array
    }

    func pageController(_ pageController: NSPageController, viewControllerForIdentifier identifier: String) -> NSViewController {
        let vc = self.storyboard!.instantiateController(withIdentifier: "ViewController") as! ViewController
        vc.view.autoresizingMask = [.height, .width]
        return vc
    }

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

    func pageController(_ pageController: NSPageController, prepare viewController: NSViewController, with object: Any?) {
        guard let item = object as? String,
              let itemVC = viewController as? ViewController else {
            return
        }

        itemVC.item = item
    }

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

谢谢。完成了。

@IBAction func moveThreePage(_ sender: Any) {
    //To animate a selectedIndex change:
    NSAnimationContext.runAnimationGroup({ context in
        self.animator().selectedIndex = 2
    }, completionHandler: {
        self.completeTransition()
    })
}