代码之家  ›  专栏  ›  技术社区  ›  jsr

视图控制器之间的通信,无法将数据传递到第二个视图控制器的出口

  •  0
  • jsr  · 技术社区  · 8 年前

    两个视图控制器:

    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 回复  |  直到 8 年前
        1
  •  0
  •   danieltmbr    8 年前

    在prepare函数中,尚未从情节提要加载视图,因此DetailViewController的输出仍然为零。 在准备时可用的DetailViewController中创建一个公共变量,然后在DetailViewController的viewDidLoad方法中,可以将标签的文本设置为该变量的内容。

    class DetailViewController: UIViewController {
    
       var text: String?
    
       override function viewDidLoad() {
           super.viewDidLoad()
           label.text = text
       }
    }
    

    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"
    }