【问题标题】:Swift 3: only nil values in destination view controller of segue [duplicate]Swift 3:segue 的目标视图控制器中只有 nil 值 [重复]
【发布时间】:2017-01-03 13:43:54
【问题描述】:

当使用 prepare (forSegue) 方法将数据传递给 segue 的目标视图控制器时,目标 VC 的所有成员都是 nil。因此,我的程序在尝试访问这些成员时会崩溃。

我在源视图控制器中的代码:

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

    if segue.identifier == "Second2DetailEdit"{
        var detailVC = segue.destination as! DrinkDetailViewController
        detailVC.headerLabel.text = "Edit Drink"

    }
    //...
}

VC 本身不是零。只有VC的所有成员。我是不是忘记了什么? 这只发生在我的新 Swift 3 项目中。我的 Swift 2 项目中的类似代码没有问题。 提前致谢。

【问题讨论】:

    标签: ios swift3 segue uistoryboard


    【解决方案1】:

    目标视图控制器的视图尚未创建,这就是所有 IBOutlets 为 nil 的原因。尝试在普通属性(如字符串)和目的地的 ViewDidLoad 中发送您需要的信息,更新您的视图。

    【讨论】:

      【解决方案2】:

      解决此问题的最佳方法是在您的第二个视图控制器中创建一个变量并将文本设置为该变量。

      然后,一旦 vc 初始化,您可以将 headerLabel.text 设置为 viewDidLoad 中的新变量

      【讨论】:

        【解决方案3】:

        我建议安全地打开您的 detailVC,而不是强制打开...

        if segue.identifier == "Second2DetailEdit" {
            if let detailVC = segue.destination as? DrinkDetailViewController {
                detailVC.headerLabel.text = "Edit Drink" 
            }
        }
        

        您可以更轻松地在destinationVC 上设置属性并将信息传递给这些属性,而不是尝试通过UILabels...

        【讨论】:

          猜你喜欢
          • 2017-09-28
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 2015-02-16
          • 1970-01-01
          • 1970-01-01
          • 2017-07-24
          相关资源
          最近更新 更多