视图控制器之间的通信,不能将数据传递到第二视图控制器的插座

时间:2017-10-04 02:52:48

标签: cocoa-touch

两个视图控制器:

Two view controllers

override func prepare(for segue: UIStoryboardSegue, sender: Any?) {
        if (sender as! cell1).name.text == "ww"{
            let s = segue.destination as! DetailViewController
            s.detail?.text = "wwwwwwwwwww"
        }
    }

我是编码的新手。我在这里尝试的是在视图控制器之间进行通信。出于某种原因,我无法在第二个视图控制器的标签中显示wwwwwwwwwww

1 个答案:

答案 0 :(得分:0)

在准备功能中,视图尚未从故事板加载,因此DetailViewController的出口仍为零。 在DetailViewController中创建一个公共变量,该变量将在prepare中可用,然后在DetailViewController的viewDidLoad方法中,您可以将标签的文本设置为该变量的内容。

class DetailViewController: UIViewController {

   var text: String?

   override function viewDidLoad() {
       super.viewDidLoad()
       label.text = text
   }
}

然后在列表viewcontroller中设置detail vc的文本属性:

override func prepare(for segue: UIStoryboardSegue, sender: Any?) {
    guard (sender as! cell1).name.text == "ww",
        let detailVc = segue.destination as? DetailViewController
        else { return }

    detailVc.text = "wwwwwwwwwww"
}