Как прибавлять новое значение в Label?
У меня имеется 13 ViewController'ов в проекте, я передаю данные из 13-ого View в 7-ой View, то есть обратная передача данных.
В PickerView я записываю выбранные данные в переменную:
func pickerView(_ pickerView: UIPickerView, didSelectRow row: Int, inComponent component: Int) {
volumeFromMilimetersVC = String(volume.volumeArray[row])
}
Код из контроллера, откуда я передаю данные:
var volumeFromMilimetersVC = ""
override func prepare(for segue: UIStoryboardSegue, sender: Any?) {
let vc = segue.destination as? MainViewController
vc?.delegate = self
vc?.currentValue.text = volumeFromMilimetersVC + " " + "/"
}
В currentValue.text я записываю значение, которое пользователь выбрал на последнем View. Один раз оно срабатывает и записывается. Далее, мне нужно, чтобы то первое значение сохранилось в Label и когда пользователь второй раз выбирает новое значение, оно прибавлялось к предыдущему значению в лейбле. Допустим, пользователь выбрал 100 - значение записалось в Label на предыдущем View. Пользователь выбирает еще значение, например, 500 и значение в Label должно быть 600 (500 + 100) и так далее.
UPD. Я создал модель для сохранения в UserDefaults, но как использовать данные для сложения не пойму
static var addedVolume: String! {
get {
return UserDefaults.standard.string(forKey: SettingsKeys.addedVolume.rawValue)
} set {
let defaults = UserDefaults.standard
let key = SettingsKeys.addedVolume.rawValue
if let userAddVolume = newValue {
print("Объем напитка \(userAddVolume) добавлен в \(key)")
defaults.set(userAddVolume, forKey: key)
UserDefaults.standard.synchronize()
} else {
defaults.removeObject(forKey: key)
}
}
}
Ответы (1 шт):
Можно сделать примерно так
В целевом вью контроллере (7-й) добавляем такой код
private var volume: Double = 0 {
didSet {
updateVolumeLabel(with: volume)
}
}
public func addVolume(_ value: Double) {
volume += value
}
private func updateVolumeLabel(with value: Double) {
// форматируем и выводим текст в лейбле
let text = String(value)
// ...
}
В исходном (13-й) тогда делаем например так
Если изменить тип переменной
var volumeFromMilimetersVC: Double = 0
func pickerView(_ pickerView: UIPickerView, didSelectRow row: Int, inComponent component: Int) {
volumeFromMilimetersVC = volume.volumeArray[row]
}
vc?.addVolume(volumeFromMilimetersVC)