Stanley Stanley - 1 month ago 7
Swift Question

How to perform differently from different segues?

I have a

AController
with 2 segues connected to
BController
.

In
AController
I wrote this:

override func prepare(for segue: UIStoryboardSegue, sender: Any?) {
if segue.identifier == "FirstSegue"{
// do something
}
if segue.identifier == "SecondSegue"{
// do something
}
}


Then come to
BController
, I am looking for this:

if AController.segue.identifer == "FirstSegue"{
// do something
}

if AController.segue.identifer == "SecondSegue"{
// do something
}


What should I do?



Here is the storyboard
enter image description here

Answer

Similar to Mr.UB's answer you could also create a variable which stores the string value of the segue:

override func prepare(for segue: UIStoryboardSegue, sender: Any?) {
    if segue.identifier == "FirstSegue"{
        let viewController = segue!.destinationViewController as! BController 
        viewController.sourceSegue = "FirstSegue"
    }
    if segue.identifier == "SecondSegue"{
        let viewController = segue!.destinationViewController as! BController 
        viewController.sourceSegue = "SecondSegue"
    }
}

So you could do something like this (in BController), which is closer to what you originally wanted:

var sourceSegue: String!

if sourceSegue == "FirstSegue"{
    // do something
} else if sourceSegue == "SecondSegue"{
    // do something
}
Comments