我从事一个电子商务项目,现在正在设计购物篮页面。我创建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。
您可以查看照片的一般想法。
答案 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)}))
}