Reputation:
My code below is trying to segue a value from twoviewcontroller to view controller. The segue is working and I can go from view controller to view controller. However the segue is not transferring a value. In the log file on VC1 still says nothing even when I go from vc2 to vc1
class ViewController: UIViewController {
var score = ""
override func viewDidLoad() {
super.viewDidLoad()
print("mm:",score)
if score == "" {
FIRE.loadGif(name: "pGif")
}
if score == "b"{
FIRE.loadGif(name: "ezgif.com-video-to-gif")
}
}}
SECOND VIEW CONTROLLER
class twoViewController: UIViewController {
let FIRE = UIButton()
override func viewDidLoad() {
super.viewDidLoad()
view.addSubview(FIRE)
FIRE.addTarget(self, action:#selector(handleRegisterb), for: .allTouchEvents)
}
@objc func handleRegisterb(sender: UIButton){
let vc = ViewController()
vc.score = "b"
performSegue(withIdentifier: "beg", sender: nil)
}
Upvotes: 1
Views: 58
Reputation: 454
performSeguewithidentifier actually just allows the switch(between ViewControllers) to happen.While prepareForSegue prepares data to passed between view controllers, And the default implementation of it does nothing; you can override it to pass relevant data to the new view controller
Upvotes: 2
Reputation: 9652
You should use prepare
method to pass data through segue
,
@objc func handleRegisterb(sender: UIButton){
performSegue(withIdentifier: "beg", sender: self)
}
override func prepare(for segue: UIStoryboardSegue, sender: Any?) {
if (segue.identifier == "beg") {
let vc = segue.destination as! ViewController
vc.score = "b"
}
}
Upvotes: 1