【问题标题】:How to pass data from container view controller to other controllers by segue?如何通过 segue 将数据从容器视图控制器传递到其他控制器?
【发布时间】:2018-08-15 04:22:41
【问题描述】:

我想通过从我的容器视图控制器输入文本来更新最右边控制器中的标签(然后单击按钮提交文本),但标签没有得到更新。我不确定我的代码的哪一部分是错误的。而且,有没有什么好的解决方案可以在容器与其父容器之间共享数据?谢谢。

代码如下:

import UIKit

class ChildViewController: UIViewController {

    override func viewDidLoad() {
    super.viewDidLoad()

}


@IBOutlet weak var TextField: UITextField!


@IBAction func PassItToUpdate(_ sender: UIButton) {
    let parentController = self.parent as! MainViewController
    parentController.performSegue(withIdentifier: "PassToUpdate", sender: parentController)
}

override func prepare(for segue: UIStoryboardSegue, sender: Any?) {
    if segue.identifier == "PassToUpdate" {
        let vc = segue.destination as! UpdateViewController
        vc.UpdateTextLabel.text = TextField.text
    }
}

}



import UIKit

class MainViewController: UIViewController {

    override func viewDidLoad() {
        super.viewDidLoad()

    }

}


import UIKit

class UpdateViewController: UIViewController {
override func viewDidLoad() {
    super.viewDidLoad()

}

@IBOutlet weak var UpdateTextLabel: UILabel!


}

【问题讨论】:

  • 我猜你可以不访问父视图控制器直接通过
  • Muhammed Azharudheen Thx,我必须这样实现,因为我需要稍后捕获容器视图的快照。

标签: swift segue pass-data container-view


【解决方案1】:

为了将来参考,it doesn't work 通常不足以让我们帮助您,您应该提及是否出现错误(哪个)、是否崩溃(控制台说什么)、如果没有任何反应等.

我会继续猜测您的应用程序崩溃了,因为您在视图之前访问UpdateTextLabel,因此尚未创建文本字段。

对您的 prepareForSegue 函数进行此更改:

override func prepare(for segue: UIStoryboardSegue, sender: Any?) {
    if segue.identifier == "PassToUpdate" {
        let vc = segue.destination as! UpdateViewController
        vc.loadViewIfNeeded()
        vc.UpdateTextLabel.text = TextField.text
    }
}

这将在尝试访问文本字段之前加载视图和文本字段。

还有一点,通常的做法是类名以大写字母开头(如MyViewController),变量以小写字母开头(updateTextLabel 而不是UpdateTextLabel)。

【讨论】:

  • EmilioPelaez 谢谢,我只是编辑我的问题。文本标签不会在最右侧的控制器视图中更新。该应用程序没有错误。
  • 您是否验证了您的if 块中的代码已执行?在那里添加一个断点。
  • EmilioPelaez 你说得对。如果我的代码中没有执行语句。你知道为什么吗?? THX
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2020-04-01
  • 2015-12-23
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多