Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/ios/113.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Ios 从VCA.swift到VCB.swift的计算值_Ios_Swift_Xcode - Fatal编程技术网

Ios 从VCA.swift到VCB.swift的计算值

Ios 从VCA.swift到VCB.swift的计算值,ios,swift,xcode,Ios,Swift,Xcode,我知道,YouTube上有很多关于如何在视图控制器之间传递数据的视频。但这不是我需要的。我是这个网站和Xcode的新手。我在这里找不到我问题的答案。 我的应用程序使用segue从VCA移动到VCB。 我需要将计算值从ViewControllerA.swift传递到ViewControllerB.swift ViewControllerA.swift中我的代码示例 let weight = Double(textField.text!) let calculatedValueA = weight!

我知道,YouTube上有很多关于如何在视图控制器之间传递数据的视频。但这不是我需要的。我是这个网站和Xcode的新手。我在这里找不到我问题的答案。 我的应用程序使用segue从VCA移动到VCB。 我需要将计算值从ViewControllerA.swift传递到ViewControllerB.swift ViewControllerA.swift中我的代码示例

let weight = Double(textField.text!)
let calculatedValueA = weight! * 2
let calculatedValueB = weight! * 3
let calculatedValueC = weight! * 4
ViewControllerB.swift中的覆盖函数viewDidLoad()将看到类似的结果

calValueA.text = String(format: "%4.0f", calculatedValueA)
calValueB.text = String(format: "%4.0f", calculatedValueB)
calValueC.text = String(format: "%4.0f", calculatedValueC)

一种方法是您需要在
ViewControllerB.swift

var valueA: Double?
var valueB: Double?
var valueC: Double?
当您从VCA导航到VCB时,需要使用受尊重的值设置这些属性

let vcb = VCA viewcontroller....
vcb.valueA = weight! * 2
vcb.valueB = weight! * 3
vcb.valueC = weight! * 4
self.navigationController.pushViewController...
注意:强制打开可选值不是一个好的做法,您可以使用if-let或guard来保存应用程序,以免崩溃


您可以使用委托或闭包将数据传递回调用对象

我理解你的问题,你可以这样做:

    class ViewControllerA: UIViewController {
    @IBOutlet weak var textField: UITextField!

    func sendValuesToB(){
        let viewControllerB = self.storyboard?.instantiateViewController(withIdentifier: "ViewControllerB") as! ViewControllerB
        //calculate values
        let weight = Double(textField.text!)
        let calculatedValueA = weight! * 2
        let calculatedValueB = weight! * 3
        let calculatedValueC = weight! * 4

        //set the value of view controller B
        viewControllerB.calculatedValueA = calculatedValueA
        viewControllerB.calculatedValueA = calculatedValueB
        viewControllerB.calculatedValueA = calculatedValueC
        self.navigationController?.pushViewController(viewControllerB, animated: true)
    }
}

class ViewControllerB: UIViewController {
    @IBOutlet weak var calValueA: UILabel!
    @IBOutlet weak var calValueB: UILabel!
    @IBOutlet weak var calValueC: UILabel!

    var calculatedValueA : Double!
    var calculatedValueB : Double!
    var calculatedValueC : Double!

    override func viewDidLoad() {
        super.viewDidLoad()
        calValueA.text = String(format: "%4.0f", calculatedValueA)
        calValueB.text = String(format: "%4.0f", calculatedValueB)
        calValueC.text = String(format: "%4.0f", calculatedValueC)
    }
}

你的应用程序是如何构建的?VCA和VCB的关系是什么?它们是选项卡栏控制器的元素吗?该应用程序是否使用segue从VCA移动到VCB?您好!这是同一个应用程序你需要我显示屏幕或部分代码吗?只需更新你的问题,描述你如何从VCA移动到VCB。“说,我带着一辆segue就够了。”瓦卡瓦马说。谢谢!但是我得到了线程1:致命错误:在展开第
calValueA.text=String(格式:“%4.0f”,calculatedValueA)”行中的可选值时意外地发现了nil
您应该检查所有@IBOutlet对象是否已连接?