首页 > 解决方案 > UILabel 文本变量未正确更新 - Swift 4

问题描述

作为 Swift 编程的介绍,我正在尝试制作一个小型计算器应用程序。尝试创建加减按钮功能时出现错误。按钮的目的是当点击时,如果显示文本的值是> 0减号,则在字符串的开头添加(即8 ---> -8,如果显示文本< 0的值是显示文本的值,则乘以减号) 1 并将显示文本值分配为新数字的字符串。

我的问题是,当我第一次单击减号按钮时,它按预期工作,但是,当我第二次单击它时(< 0),显示文本仍然在数字之前保留减号。我的代码是:

@IBAction func pmButton(_ sender: Any) {

    if toFloat(value: display.text!) < 0 {
        display.text = NSNumber(value: (toFloat(value: display.text!) * -1)).stringValue
        print(display.text!)
    }

    if toFloat(value: display.text!) > 0 {
        display.text = "-" + display.text!
    }
}

的值print(display.text!)给出了正确的值(没有减号),但在实际标签上减号仍然存在。甚至当我向字符串添加一些错误值时也是如此,即

display.text = NSNumber(value: (toFloat(value: display.text!) * -1)).stringValue + "abc"

将导致 ( -8 ---> -8abc)。

我还尝试print(display.text!)在重新分配值之前添加(在第 4 行),它会恢复为原始的负值。所以它似乎display.text在函数中被分配,但从未在函数之外正确更新。

我敢肯定这是非常简单的事情,但似乎无法解决。

标签: iosswift

解决方案


在您的第一个if块中,您更改值,display.text以便也满足第二个if条件;仅用于else if仅运行其中一个块。


推荐阅读