如何在 iOS 中自动执行加法?

How can I perform addition automatically in iOS?

我从事电子商务项目,现在正在设计购物车页面。我创建了 4 个步进器来确定产品的数量。我为每种产品的展示成本创建标签,为总成本创建一个标签。

@IBOutlet weak var label1: UILabel!
@IBOutlet weak var label2: UILabel!
@IBOutlet weak var label3: UILabel!
@IBOutlet weak var label4: UILabel!
@IBOutlet weak var label5: UILabel!

@IBAction func GmS1(_ sender: GMStepper) {
    label1.text = String(sender.value*1.5)
}

@IBAction func GmS2(_ sender: GMStepper) {
    label2.text = String(sender.value*0.89)
}

@IBAction func GmS3(_ sender: GMStepper) {
    label3.text = String(sender.value*26)
}

@IBAction func GmS4(_ sender: GMStepper) {
    label4.text = String(sender.value*4)
}

我不想使用按钮,但我在自动添加总成本方面苦苦挣扎。我的代码在上面。有没有人知道: 如何自动在 1 个标签中添加 4 个标签(无需任何按钮)。

创建一个函数sumValues,将所有label的值相加,并将sum的字符串赋值给label5.text。然后可以从所有 IBAction

调用此函数
@IBAction func GmS4(_ sender: GMStepper) {
    label4.text = String(sender.value*4)
    sumValues()
}

在函数sumValues()中, 设置label5.text =所有标签总和的字符串'.

SideNote - 确保在 viewDidLoad().

中将所有标签的值初始化为 0

您可以尝试从每个操作中调用此方法

func sumAll() {
   let sum = [label1,label2,label3,label4].map { Int([=10=].text ?? "0" ) ?? 0 }.reduce(0,+) 
   label5.text = "\(sum)" 
}

注意: 如果单词 variable 是标签文本的一部分,您可以从文本中提取数字或将步进器声明为出口和询问他们当前的价值并以这种方式使用

let sum = [stepper1,stepper2,stepper3,stepper4].map{[=11=].value}.reduce(0,+) 

从您的 previous question 继续:

@IBAction func gmstp1(_ sender: GMStepper) {
    label1.text = String(sender.value * 1.5)
    calculateSum()
}

@IBAction func gmstp2(_ sender: GMStepper) {
    label2.text = String(sender.value * 0.89)
    calculateSum()
}

@IBAction func gmstp3(_ sender: GMStepper) {
    label3.text = String(sender.value * 26.0)
    calculateSum()
}

@IBAction func gmstp4(_ sender: GMStepper) {
    label4.text = String(sender.value * 4.0)
    calculateSum()
}

其中 calculateSum 是这样定义的函数:

func calculateSum() {
    if let text1 = label1.text, let value1 = Double(text1),
        let text2 = label2.text, let value2 = Double(text2),
        let text3 = label3.text, let value3 = Double(text3),
        let text4 = label4.text, let value4 = Double(text4) {
        let sum = value1 + value2 + value3 + value4
        label6.text = String(sum)
    }
}

或者如果您更喜欢单线:

func calculateSum() {
    label5.text = String([label1, label2, label3, label4].reduce(0,{[=12=] + (Double(.text ?? "0") ?? 0)}))
}