只需要一些关于 swift 3 中函数的指导
Just need a little guidance on functions in swift 3
我使用 Swift 创建了一个简单的小费计算器 3. 在尝试将每个按钮的功能整合为一个功能 5 整整几个小时后,我终于搞定了。所以现在每个按钮都是硬编码的。我已将 VC file 上传至 github 供您参考。如您所见,从第 15 行开始,那是我创建函数的尝试,而第 28 行是我希望每个按钮的操作都具有的内容。我没有在函数中使用数组的经验,所以这就是我在这里所缺少的地方。我知道我真的很接近解决它,但有一些有经验的人来考虑一下会很有帮助。提前致谢!
VC Screenshot
你看,你所有的按钮动作都是这样的:
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,十五个按钮是2等等。
我使用 Swift 创建了一个简单的小费计算器 3. 在尝试将每个按钮的功能整合为一个功能 5 整整几个小时后,我终于搞定了。所以现在每个按钮都是硬编码的。我已将 VC file 上传至 github 供您参考。如您所见,从第 15 行开始,那是我创建函数的尝试,而第 28 行是我希望每个按钮的操作都具有的内容。我没有在函数中使用数组的经验,所以这就是我在这里所缺少的地方。我知道我真的很接近解决它,但有一些有经验的人来考虑一下会很有帮助。提前致谢!
VC Screenshot
你看,你所有的按钮动作都是这样的:
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,十五个按钮是2等等。