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

如何在iOS中自动执行加法?,ios,swift,e-commerce,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

我从事一个电子商务项目,现在正在设计一个篮子页面。我创建了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

  • 你们可以查看照片,了解大致情况


创建一个函数sumValues,在其中添加所有标签的值,并将sum字符串分配给
label5.text
。然后可以从所有iAction调用此函数

@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($0.text ?? "0" ) ?? 0 }.reduce(0,+) 
   label5.text = "\(sum)" 
}
注意:如果wordvariable是标签文本的一部分,您可以从文本中提取数字,或将步进器声明为插座,并询问其当前值,以这种方式使用

let sum = [stepper1,stepper2,stepper3,stepper4].map{$0.value}.reduce(0,+) 
从您的网站继续:

其中,
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)}))
}

谢谢你的评论。每个步进电机都有不同的常数,所以我们必须使用标签作为出口。这种方法在第一次增加或减少步进器时有效,但在下一次更改时无效。在写入label5而不是label6时效果很好,但存在一些问题,步进器有两个按钮(-,+)。两个按钮都做加法,但(-)按钮应该做减法,初始成本不应该为零,因为有4个产品。ı如何给出初始成本?在这种情况下,ı必须至少按下两个按钮进行添加。@B.Yılmaz
label5.text=“0”
在ı更新了Mojave和新的Xcode之后,func calculateSum(){label5.text=String([label1,label2,label3,label4]。减少(0,{$0+(Double($1.text??“0”)??0)}此函数给出一个错误,如:编译器无法在合理的时间内对此表达式进行类型检查;尝试将表达式拆分为不同的子表达式。你知道这件事吗?
func calculateSum() {
    label5.text = String([label1, label2, label3, label4].reduce(0,{$0 + (Double($1.text ?? "0") ?? 0)}))
}