user10764035
user10764035

Reputation:

segue not transferring string in segue (swift4)

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

Answers (2)

Raja Saad
Raja Saad

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

Bappaditya
Bappaditya

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

Related Questions