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

时间:2018-09-20 18:47:49

标签: ios swift e-commerce

我从事一个电子商务项目,现在正在设计购物篮页面。我创建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个标签(没有任何按钮)。

  • 总费用标签5。

  • 您可以查看照片的一般想法。

General Idea of Page

3 个答案:

答案 0 :(得分:1)

使一个函数sumValues,将所有标签的值相加,然后将sum的字符串分配给label5.text。然后可以从所有IBAction调用此函数

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

在功能sumValues()中, 设置label5.text =所有标签之和的字符串。

SideNote -确保在viewDidLoad()中将所有标签的值初始化为0。

答案 1 :(得分:1)

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

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

注意:如果单词 variable 是标签文本的一部分,则可以从文本中提取数字或将步进器声明为出口,并询问其当前值和位置。这样使用

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

答案 2 :(得分: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,{$0 + (Double($1.text ?? "0") ?? 0)}))
}