NSTabViewController - Как создать собственный переход?

У меня есть NSTabViewController, и я хочу создать собственный переход. Я добавил некоторые значения NSViewControllerTransitionOptions, и когда метод перехода вызывается с моими значениями, должна запускаться пользовательская анимация.

Ниже приведен промежуточный код, который я написал до сих пор. Анимация запускается именно так, как я хочу, но есть проблема.

nextVC не представлен (я думаю). Этот контроллер должен быть первым респондентом после анимации, который не отвечает на импорт клавиатуры.


        override func transition(from fromViewController: NSViewController, to toViewController: NSViewController, options: NSViewControllerTransitionOptions = [], completionHandler completion: (() -> Void)? = nil) {
    if options.contains(.analogToThemes) {
        if let firstVC  = fromViewController as? MBCustomizeController {
            let nextVC  = toViewController
            let themesContainer = nextVC.view
            themesContainer.setFrameOrigin(NSMakePoint(-250, -510))
            var sketchContainer:NSView?
            var panelsContainer:NSView?
            firstVC.view.addSubview(themesContainer)
            for item in firstVC.view.subviews {
                if item.identifier == "sketchContainer" {
                    sketchContainer = item
                }
                if item.identifier == "customizePanlesContainer"{
                    panelsContainer = item
                }
            }
            NSAnimationContext.runAnimationGroup({ context in
                context.duration = animationDuration
                themesContainer.animator().setFrameOrigin(NSMakePoint(0, 0))
                sketchContainer!.animator().setFrameOrigin(NSMakePoint(sketchContainer!.frame.origin.x, 520))
                panelsContainer!.animator().setFrameOrigin(NSMakePoint(panelsContainer!.frame.origin.x + panelsContainer!.frame.width , 0))
            }, completionHandler: {
                firstVC.dismiss(nil)
            })
        }
        return
    }
    super.transition(from: fromViewController, to: toViewController, options: options, completionHandler: completion)

}

Как правильно представить nextVC? Благодарю.

0 ответов

Другие вопросы по тегам