只需要在swift 3中对函数有一点指导

时间:2017-08-02 02:23:49

标签: swift3 xcode8

我使用Swift 3创建了一个简单的小费计算器。经过5个小时的尝试将每个按钮动作的功能整合到一个功能中,我就干了。所以每个按钮现在都是硬编码的。我已将VC file上传到github供您参考。正如你从第15行开始看到的,那就是我尝试创建函数和第28行是我希望每个按钮动作的内容。我没有在函数中使用数组的经验,所以我就是我缺少的地方。我知道我真的很接近解决它,但有一些经验丰富的头脑给它一次性将是有帮助的。提前谢谢!

VC Screenshot

1 个答案:

答案 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,依此类推。