如何在iOS中自动执行加法?
我从事一个电子商务项目,现在正在设计一个篮子页面。我创建了4个步进器,用于确定产品的数量。我为每个产品的展示成本创建标签,为总成本创建一个标签如何在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
@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)}))
}