【问题标题】:Can't pass data to another view controller in when preparing for segue准备 segue 时无法将数据传递给另一个视图控制器
【发布时间】:2016-09-28 03:48:07
【问题描述】:

我正在尝试将一个对象传递给另一个视图控制器,但是当我尝试设置视图控制器对象的属性时出现错误。

【问题讨论】:

  • 能否添加另一个ViewController的代码供参考?

标签: ios swift uiviewcontroller uistoryboardsegue


【解决方案1】:

ViewController 显然缺少一个名为 data 的字符串变量。

class ViewController : UIViewController {

    var data: String? // Make sure you have this defined in your view controller.
}

我还建议您在prepareForSegue 中使用destinationViewController 的条件解包。

prepareForSegue(segue: UIStoryboardSegue, sender: AnyObject?) {

    if let viewController = segue.destinationViewController as? ViewController {

        viewController.data = "Hello World"
    }
}

对于以后的帖子,请不要发布代码图片。您应该在问题中包含代码作为文本。

编码愉快:)

The Basics

【讨论】:

    【解决方案2】:

    这个错误信息量很大。它说类ViewController 没有称为data 的公共或内部属性。您必须在 ViewController 类中声明一个名为 data 的属性。

    class ViewController: UIViewController {
    
      var data: String?
    
    }
    

    【讨论】:

      【解决方案3】:

      您拥有的名为 ViewController 的类需要有一个名为 data 的公共变量。

      您的 ViewController 类可能如下所示:

      class ViewController: UIViewController {
      
          // This is your public accessible variable you can set during a seque
          var data: String?
      
          override func loadView() {
              super.loadView()
              print(self.data)
          }
      
      }
      

      另外,您的 prepareForSegue 函数可以这样简化

      if let displayTodoVC = segue.destinationViewController as? ViewController {
          displayTodoVC.data = "Hello World"
      }
      

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2017-02-11
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多