gpt4 book ai didi

ios - UILabel 不显示变量是否有值

转载 作者:行者123 更新时间:2023-11-28 14:29:06 25 4
gpt4 key购买 nike

我有一个标签(在我的 secondVC 中)显示来自 firstVC 的 Double。在 secondVCs viewDidLoad 中,我正在打印 passedDouble 并且它正在打印正确的数量,所以我知道我的 Double 被正确地转换了。我的 UILabel 位于第二个 VC 中,并且仅在 passedDouble = 0.0 时才显示金额。

第二 View Controller :

@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,它会打印此

testing for a value 12.2

但是标签完全从 View 中消失了。

如果传递的值为 0.0,则打印

testing for a value 0.0

标签显示0.0

在 Storyboard 中,我将标签标准文本保留为标签。所以,我知道标签已正确连接,因为它的文本发生变化IF值为 nil。

编辑:我赋值的第一个VC的代码

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

最佳答案

我最好的猜测是,在 prepare(for:sender:) 中,basketVCview 已经加载,所以它的 viewDidLoad 在您设置 basketVC.passedDouble = totalPrice 之前被调用。

每次 passedDouble 更新时,我宁愿使用 setter 来更新标签。将 BasketViewController 代码更改为:

@IBOutlet weak var totalLabel: UILabel!

var passedDouble = 0.0 {
didSet {
self.totalLabel?.text = "\(passedDouble)"
}
}

override func viewDidLoad() {
super.viewDidLoad()
// no need to set totalLabel.text here
}

关于ios - UILabel 不显示变量是否有值,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/51363902/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com