我使用Swift 3创建了一个简单的小费计算器。经过5个小时的尝试将每个按钮动作的功能整合到一个功能中,我就干了。所以每个按钮现在都是硬编码的。我已将VC file上传到github供您参考。正如你从第15行开始看到的,那就是我尝试创建函数和第28行是我希望每个按钮动作的内容。我没有在函数中使用数组的经验,所以我就是我缺少的地方。我知道我真的很接近解决它,但有一些经验丰富的头脑给它一次性将是有帮助的。提前谢谢!
答案 0 :(得分:0)
你看,所有按钮的动作都是这样的:
let billTotal = Double(subtotalText.text!)!
let grandTotal = (billTotal * tipArray[x]) + billTotal
//return grandTotal
totalAmountLbl.text = String(format: "%.2f", grandTotal)
唯一的区别是x
值。为了简化代码,您可以将整个事物提取到这样的方法中:
func outputGrandTotal(tipIndex: Int) {
let billTotal = Double(subtotalText.text!)!
let grandTotal = (billTotal * tipArray[tipIndex]) + billTotal
//return grandTotal
totalAmountLbl.text = String(format: "%.2f", grandTotal)
}
在每个按钮的操作中,按照以下方式拨打电话:
@IBAction func fiveBtn(_ sender: Any) {
outputGrandTotal(tipIndex: 0)
}
@IBAction func tenBtn(_ sender: Any) {
outputGrandTotal(tipIndex: 1)
}
@IBAction func fifteenBtn(_ sender: Any) {
outputGrandTotal(tipIndex: 2)
}
@IBAction func twentyBtn(_ sender: Any) {
outputGrandTotal(tipIndex: 3)
}
@IBAction func twentyfiveBtn(_ sender: Any) {
outputGrandTotal(tipIndex: 4)
}
@IBAction func thirtyBtn(_ sender: Any) {
outputGrandTotal(tipIndex: 5)
}
为了进一步简化代码,您可以为所有按钮提供tag
。那么你只需要一个@IBAction
方法。在该方法中,访问按钮的标签。像这样:
@IBAction func tipButtonTapped(_ sender: UIButton) {
outputGrandTotal(tipIndex: sender.tag)
}
您将所有按钮的操作连接到上述方法,并为每个按钮添加标签。五个按钮的标签是0,1个按钮是1,十五个按钮是2,依此类推。