自定义展开Segue在Swift

时间:2017-08-21 23:13:59

标签: ios swift storyboard segue

我有一个unwind segue,我希望有一个自定义动画。

我有一个自定义的segue类:

import UIKit
import QuartzCore

class SegueFromRight: UIStoryboardSegue {

override func perform() {
    let src: UIViewController = self.source
    let dst: UIViewController = self.destination
    let transition: CATransition = CATransition()
    let timeFunc : CAMediaTimingFunction = CAMediaTimingFunction(name: kCAMediaTimingFunctionEaseInEaseOut)
    transition.duration = 0.25
    transition.timingFunction = timeFunc
    transition.type = kCATransitionPush
    transition.subtype = kCATransitionFromRight
    src.navigationController!.view.layer.add(transition, forKey: kCATransition)
    src.navigationController!.pushViewController(dst, animated: false)
    }
}

我已经定义了unwind segue:

@IBAction func unwindToGameOver(sender: UIStoryboardSegue) {
}

按下按钮时调用segue:

@IBAction func backButtonPressed(_ sender: Any) {
    performSegue(withIdentifier: "unwindToGameOver", sender: self)
}

这是unwind segue的界面构建器:

interface builder

崩溃时“以NSException类型的未捕获异常终止”

自定义segue适用于show segue&当我删除它的类时,展开segue工作。

有什么想法吗?

1 个答案:

答案 0 :(得分:2)

您正在使用展开segue并且您的自定义segue正在推动。但是导航控制器中的放松信号将是流行音乐,而不是推动。

坦率地说,现在你使用custom transitions,而不是继承segue,但是如果你把它改成pop,它就可以了。