Pass variables from one ViewController to another in Swift

前端 未结 3 1297
一整个雨季
一整个雨季 2020-12-02 00:45

I have a calculator class, a first ViewController to insert the values and a second ViewController to show the result of the calculation. Unfortunately I get a error called

3条回答
  •  盖世英雄少女心
    2020-12-02 01:09

    The problem here is that the FirstViewController has no reference to the instance of SecondViewController. Because of this, this line:

    secondViewController.setResultLabel(myResult)
    

    does nothing (except probably causing the Can't unwrap Optional.None error). There are a few ways to solve this problem. If you are using storyboard segues you can use the -prepareForSegue method of UIViewController. Here is an example:

    In FirstViewController:

    override func prepareForSegue(segue: UIStoryboardSegue!,sender: AnyObject!){         
      //make sure that the segue is going to secondViewController
      if segue.destinationViewController is secondViewController{
        // now set a var that points to that new viewcontroller so you can call the method correctly
        let nextController = (segue.destinationViewController as! secondViewController)
        nextController.setResultLabel((String(myResult)))
      }
    }
    

    Note: this code will not run as is because the function has no access to the result variable. you'll have to figure that out yourself :)

提交回复
热议问题