I need to segue 3 possible values between the view controllers depending on whatever FIRE BUTTON the user selects. I can transfer one value but I can only transfer one value. I tried to use .tag to get the correct value transferred but it is not working. I think it is clear what I am trying to do. I can not transfer 3 possible values right now.
let FIRE = UIButton()
let FIRE2 = UIButton()
let FIRE3 = UIButton()
override func viewDidLoad() {
super.viewDidLoad()
view.addSubview(FIRE)
let image = UIImage(named: "a.png") as UIImage?
FIRE.setImage(image, for: .normal)
FIRE.centerXAnchor.constraint(equalTo: view.centerXAnchor, constant: 0).isActive = true
FIRE.topAnchor.constraint(equalTo: view.topAnchor, constant: 200).isActive = true
FIRE.widthAnchor.constraint(equalToConstant: 250).isActive = true
FIRE.heightAnchor.constraint(equalToConstant: 100).isActive = true
FIRE.translatesAutoresizingMaskIntoConstraints = false
FIRE.addTarget(self, action:#selector(handleRegisterb), for: .allTouchEvents)
view.addSubview(FIRE2)
let image2 = UIImage(named: "b.png") as UIImage?
FIRE2.setImage(image2, for: .normal)
FIRE2.centerXAnchor.constraint(equalTo: view.centerXAnchor, constant: 0).isActive = true
FIRE2.topAnchor.constraint(equalTo: view.topAnchor, constant: 400).isActive = true
FIRE2.widthAnchor.constraint(equalToConstant: 250).isActive = true
FIRE2.heightAnchor.constraint(equalToConstant: 100).isActive = true
FIRE2.translatesAutoresizingMaskIntoConstraints = false
FIRE2.addTarget(self, action:#selector(handleRegisterb), for: .allTouchEvents)
view.addSubview(FIRE3)
let image3 = UIImage(named: "c.png") as UIImage?
FIRE3.setImage(image3, for: .normal)
FIRE3.centerXAnchor.constraint(equalTo: view.centerXAnchor, constant: 0).isActive = true
FIRE3.topAnchor.constraint(equalTo: view.topAnchor, constant: 600).isActive = true
FIRE3.widthAnchor.constraint(equalToConstant: 250).isActive = true
FIRE3.heightAnchor.constraint(equalToConstant: 100).isActive = true
FIRE3.translatesAutoresizingMaskIntoConstraints = false
FIRE3.addTarget(self, action:#selector(handleRegisterb), for: .allTouchEvents)
}
@objc func handleRegisterb(sender: UIButton){
performSegue(withIdentifier: "beg", sender: self)
FIRE.tag = 1
}
@objc func handleRegisterb2(sender: UIButton){
performSegue(withIdentifier: "beg", sender: self)
FIRE.tag = 2
}
@objc func handleRegisterb3(sender: UIButton){
performSegue(withIdentifier: "beg", sender: self)
FIRE.tag = 3
}
override func prepare(for segue: UIStoryboardSegue, sender: Any?) {
if (segue.identifier == "beg") {
if FIRE.tag == 1 {
let vc = segue.destination as! ViewController
vc.score = "a"
}
if FIRE.tag == 2 {
let vc = segue.destination as! ViewController
vc.score = "b"
}
if FIRE.tag == 3 {
let vc = segue.destination as! ViewController
vc.score = "c"
}
}
}
You can send the selected tag in performSegue
method as part of sender
,
@objc func handleRegisterb(sender: UIButton){
performSegue(withIdentifier: "beg", sender: 1)
}
@objc func handleRegisterb2(sender: UIButton){
performSegue(withIdentifier: "beg", sender: 2)
}
@objc func handleRegisterb3(sender: UIButton){
performSegue(withIdentifier: "beg", sender: 3)
}
Then in prepare
method based on the tag value assign the score
,
override func prepare(for segue: UIStoryboardSegue, sender: Any?) {
if (segue.identifier == "beg") {
let tag = sender as! Int
let vc = segue.destination as! ViewController
if tag == 1 {
vc.score = "a"
} else if tag == 2 {
vc.score = "b"
} else if tag == 3 {
vc.score = "c"
}
}
}