Vinny Twice
Vinny Twice

Reputation: 41

prepareForSegue won't pass data in Swift 4

I'm trying to pass a text from a text field in a view controller to a label in a second view controller via prepareForSegue, but it's not working.

My code so far:

class ViewController: UIViewController {
    @IBOutlet weak var inputTextField: UITextField!

    // use of override func prepare gives an error
    func prepareForSegue(segue: UIStoryboardSegue, sender: AnyObject?) {

        var DestViewController: secondViewController = segue.destination as! secondViewController
        DestViewController.labelText = inputTextField.text!
    }
}

class SecondViewController: UIViewController {
    @IBOutlet weak var receivedTextLabel: UILabel!

    var labelText = "ss"

    override func viewDidLoad() {
        super.viewDidLoad()

        receivedTextLabel.text! = labelText
    }
}

If I use override for prepareForSegue, I get the following error:

Method does not override any method from it's superclass

Without overriding, it builds, but after performing the segue from the button to SecondViewController, the label's text doesn't get updated.

Upvotes: 0

Views: 2209

Answers (1)

user3151675
user3151675

Reputation: 58029

The method changed back in Swift 3 from prepareForSegue(segue:sender) to prepare(for:sender:). Replace it with the following:

override func prepare(for segue: UIStoryboardSegue, sender: Any?)

Upvotes: 4

Related Questions