我有两个UIViewController
:A,B
让我们说有两种连接方式:C,D
一旦segue
被激活并且我处于视图B中,我可以知道是哪一个段把我带到这里的吗? C还是D?
答案 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 }
}
编辑:根据评论的建议,最好期望目标遵循协议而不是特定类型的目标。