Código de amostra NSStoryboardSegue (Yosemite Storyboard)

Introdução ao OS X YosemiteNSStoryboardSegue

"Um storyboard segue especifica uma relação de transição ou contenção entre duas cenas em um storyboard ..."

Atualizar:

• Se eu tentar usar uma subclasse NSStoryboardSegue em um Storyboard com Yosemite., Ela trava com o SIGABRT.

• Se eu ignorar os itens a seguir e apresentar manualmente um controlador de exibição usando um animador personalizado especificado para apresentação e dispensa,

func presentViewController(_ viewController: NSViewController,
                  animator animator: NSViewControllerPresentationAnimator)

funciona como esperado.

Esta postagem fornece informações adicionais:Animar a apresentação personalizada do ViewController no OS X Yosemite

Usando isso como referência, aqui está minha tentativa até agora:

class FadeSegue: NSStoryboardSegue {

    override func perform() {
        super.perform()
        sourceController.presentViewController(destinationController as NSViewController,
            animator: FadeTransitionAnimator())
    }
}


class FadeTransitionAnimator: NSObject, NSViewControllerPresentationAnimator {

    func animatePresentationOfViewController(toViewController: NSViewController, fromViewController: NSViewController) {

        toViewController.view.wantsLayer = true
        toViewController.view.layerContentsRedrawPolicy = .OnSetNeedsDisplay
        toViewController.view.alphaValue = 0
        fromViewController.view.addSubview(toViewController.view)
        toViewController.view.frame = fromViewController.view.frame

        NSAnimationContext.runAnimationGroup({ context in
            context.duration = 2
            toViewController.view.animator().alphaValue = 1
            }, completionHandler: nil)
    }

    func animateDismissalOfViewController(viewController: NSViewController, fromViewController: NSViewController) {

        viewController.view.wantsLayer = true
        viewController.view.layerContentsRedrawPolicy = .OnSetNeedsDisplay

        NSAnimationContext.runAnimationGroup({ (context) -> Void in
            context.duration = 2
            viewController.view.animator().alphaValue = 0
            }, completionHandler: {
                viewController.view.removeFromSuperview()
        })
    }

}

questionAnswers(3)

yourAnswerToTheQuestion