我有两个按钮,一个是侧面按钮,另一个是暗侧按钮。按下任何按钮时,请执行以下操作:
lightSideInt = lightSideInt! + 1
totalClicks = totalClicks!+1
let lightPercent = (lightSideInt!/totalClicks!) * 100
let darkPercent = (darkSideInt!/totalClicks!) * 100
darkSideButton.setTitle("\(darkPercent)%",for: .normal)
lightSideButton.setTitle("\(lightPercent)%",for: .normal)
除了darkSideInt = darkSideInt! + 1
之外的暗按钮一样,一切都是一样的。 darkSideInt
,lightSideInt
& totalClicks
是全局变量。
现在发生的事情是,当我第一次按下按钮时,它会给出一个按钮标题100%
而另一个0%
,然后使用它必须关闭屏幕,然后进入此屏幕再次。所以这次变量是全局的,他们已经有了值,所以当我按下按钮时,我可以看到增量成功发生,但按钮标题是0%
,无论我按下多少次按钮,它仍然是相同。
这些是全局变量:
var darkSideInt: Int?
var lightSideInt: Int?
var totalClicks: Int?
答案 0 :(得分:3)
将/
运算符应用于两个Int
时,结果也将是Int
类型,因此您的问题就出现了。在应用除法之前,您需要将两个变量都转换为Double
。
let lightPercent = Int(Double(lightSideInt)/Double(totalClicks) * 100)
let darkPercent = Int(Double(darkSideInt)/Double(totalClicks) * 100)
darkSideButton.setTitle("\(darkPercent)%",for: .normal)
lightSideButton.setTitle("\(lightPercent)%",for: .normal)
如果您要强制解包分配给它们的值,则将lightSideInt
和darkSideInt
定义为可选项是没有意义的。只需将它们定义为非选项,然后就可以摆脱百分比计算中的力量展开。