UILabel文本变量无法正确更新-Swift 4

时间:2018-07-08 12:41:09

标签: ios swift

作为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)。

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

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

1 个答案:

答案 0 :(得分:2)

在您的第一个if块中,更改display.text的值,以便同时满足第二个if条件;只需使用else if即可运行其中一个块。