Как я могу выполнить сложение автоматически в iOS? - PullRequest
0 голосов
/ 20 сентября 2018

Я работаю над проектом электронной коммерции и сейчас занимаюсь дизайном страницы корзины.Я создаю 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)
}

Я не хочу использовать кнопку, но я боролся с дополнительной общей стоимостью автоматически.Мои коды выше.Кто-нибудь знает: Как можно добавить 4 метки в 1 метку автоматически (без какой-либо кнопки).

  • Label5 для общей стоимости.

  • Вы можете проверить фото для общей идеи.

General Idea of Page

Ответы [ 3 ]

0 голосов
/ 20 сентября 2018

Вы можете попытаться вызвать этот метод из каждого действия

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

Примечание: , если слово переменная является частью текста метки, из которого можно извлечь числотекст или объявите степперы как торговые точки и спросите их об их текущей стоимости и при этом используйте

let sum = [stepper1,stepper2,stepper3,stepper4].map{$0.value}.reduce(0,+) 
0 голосов
/ 21 сентября 2018

Продолжая ваш предыдущий вопрос :

@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)}))
}
0 голосов
/ 20 сентября 2018

Создайте функцию sumValues, добавьте в нее все значения метки и присвойте строку суммы label5.text.Затем эту функцию можно вызвать из всех IBAction

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

В функции sumValues() установить label5.text = строку суммы всех меток '.

SideNote - Обязательно инициализируйте значение всех меток равным 0 в viewDidLoad().

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...