我有一个标签(在我的secondVC中),该标签显示来自firstVC的隔离Double。在secondVCs viewDidLoad中,我正在打印passedDouble
,并且正在打印正确的数量,因此我知道Double被正确地隔离了。我的UILabel
在secondVC中,并且仅在passedDouble
= 0.0时显示金额。
SecondViewController:
@IBOutlet weak var totalLabel: UILabel!
var passedDouble = 0.0
override func viewDidLoad() {
super.viewDidLoad()
print("testing for a value \(passedDouble)")
totalLabel.text = String("\(passedDouble)")
}
例如,如果传递的值为12.2,它将打印此内容
测试值12.2
但是标签从视图中完全消失了。
但是如果传递的值为0.0,则会打印
测试值0.0
,标签显示为0.0
在情节提要中,我将标签标准文本保留为Label。因此,我知道标签正确连接,因为其文本更改为 IF ,值为零。
编辑:我要为其分配值的firstVC的代码
var totalPrice: Double = Double()
@IBAction func basketAction(_ sender: UIButton) {
for cost in priceDictionaryToBeSent {
totalPrice += Double(cost)!
}
performSegue(withIdentifier: "basket", sender: self)
}
override func prepare(for segue: UIStoryboardSegue, sender: Any?) {
if segue.identifier == "basket" {
if let basketVC = segue.destination as? BasketViewController {
basketVC.passedDouble = totalPrice
//This is sending the correct price
}
}
}
答案 0 :(得分:1)
我最好的猜测是,prepare(for:sender:)
中的basketVC
已经加载,因此在设置view
之前已调用了它的viewDidLoad
。
我希望每次basketVC.passedDouble = totalPrice
更新时都使用setter更新标签。将passedDouble
代码更改为此:
BasketViewController
答案 1 :(得分:0)
感谢米兰·诺萨(MilanNosáľ)说该视图可能已经加载,实际上已经加载了,所以我将代码从我的viewDidLoad
中的BasketViewController
移到了viewDidAppear
,如下所示:
override func viewDidAppear(_ animated: true) {
super.viewDidAppear(true)
print("testing for total price £\(passedDouble)")
totalLabel.text = "Total price £\(passedDouble)"
}