只需要一些关于 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等等。