启动后检查Segue

时间:2018-08-31 17:20:18

标签: swift segue

我有两个UIViewController:A,B

让我们说有两种连接方式:C,D

一旦segue被激活并且我处于视图B中,我可以知道是哪一个段把我带到这里的吗? C还是D?

2 个答案:

答案 0 :(得分:1)

我不知道有任何内置的机制,但是您可以让所有目标视图控制器都遵循协议SourceSegueProtocol,该协议具有一个包含调用序列的变量。

然后在源视图控制器的prepare(for:sender:)方法中,可以为符合SourceSegueProtocol的目标视图控制器设置该变量。

答案 1 :(得分:0)

有一个prepare(for:segue)函数,允许您在新的ViewController中设置属性。

class OriginViewController : UIViewController {

    ...

    override func prepare(for segue: UIStoryboardSegue, sender: Any?) {
        if let destination = segue.destination as? SegueProtocol {
            destination.transitionSegue = segue.identifier
        }
    }
}

class DestinationViewController : UIViewController, SegueProtocol {
    var transitionSegue: String = ""

    override func viewDidLoad() {
        print("Segue: ", transitionSegue)
    }
}

protocol SegueProtocol {
    var transitionSegue : String { get set }
}

编辑:根据评论的建议,最好期望目标遵循协议而不是特定类型的目标。