如何简单地跨视图控制器传递数字和方程式?

时间:2018-10-06 13:55:45

标签: swift xcode

我想拥有3个View Controller; A,B和C。将显示最终值的视图控制器A,即主视图控制器。 View Controller B和View Controller C将使用简单的文本字段作为输入。您在View Controller B和C中的“文本字段”中输入的值将被添加在一起,并显示在View Controller A中。您还需要具有按钮以实现操作。该怎么办?

例如,如果用户在View Controller B中输入数字2,在View Controller C文本字段中输入数字3,则View Controller A将显示数字5。

3 个答案:

答案 0 :(得分:0)

有多种方法

您可以使用代理,通知中心等。

尝试此参考

Send data back

Send Data Back

如果您可以共享您的代码,那么到目前为止会有什么帮助。

答案 1 :(得分:0)

首先在ViewController B中创建变量"numberOfCViewController",然后在ViewController A中创建两个变量"numberOfCViewControllerInA""numberOfBViewControllerInA"

然后只需在所有控制器之间创建segues并简单地添加此函数即可传递TextFields数据:

override func prepare(for segue: UIStoryboardSegue, sender: Any?)
{
    if segue.identifier == "CViewControllerToBViewController"
    {
        let BViewController = segue.destination as! BViewController
        BViewController.numberOfCViewController = numberTextField.text!
    }
}

这样做可以将numberTextField.text!传递给ViewControllerB。 现在要做的就是在其他ViewController中重复相同的技术,直到达到C为止。

然后,您只需将两个数字相加,然后将结果分配给ViewController C中的Label。

答案 2 :(得分:0)

取决于您的用途:

  • Segue:

    override func prepare(for segue: UIStoryboardSegue, sender: Any?) {
        guard segue.identifier == "ViewControllerBToViewControllerC" else {
            return
        }
        guard let viewControllerB = segue.destination as? ViewControllerB else {
            return
    }
        viewControllerB.passedValue = <insert passed value>
    }
    
  • 导航控制器:

    guard let navigationController = navigationController else {
        return
    }
    guard let viewControllerB = UIStoryboard(name: "\(ViewControllerB.self)", bundle: nil) as? ViewControllerB else {
        return
    }
    viewControllerB.passedValue = <insert passed value>
    navigationController.pushViewController(viewControllerB, animated: true)