Поэтому моя цель состоит в том, чтобы текст метки всегда возвращался к исходной цене, если контроллер представления предупреждений будет отклонен.
Вот отрывок из этой проблемы, чтобы вы, ребята, могли лучше понять это, это было бы слишком долго, чтобы объяснять по тексту...
Итак, как вы можете видеть, когда пользователь отменяет приглашение с предупреждением, я хочу, чтобы все вернулось обратно, как если бы он никогда не нажимал его в первую очередь. Значение шагового двигателя возвращается, текст метки номера возвращается, но стоимость события не меняется, и я не могу понять, почему.
Вот функция @IBAction
, которую я использую со степпером:
@IBAction func guestsCount(_ sender: UIStepper) {
guestNumberCount.text = String(Int(sender.value))
let totalCost = Decimal(sender.value) * cost
let formatted = totalCost.formattedAmount
var textfield = UITextField()
var textfield2 = UITextField()
actualCostOfEvent.text = "$\(formatted ?? "")"
if(Int(sender.value) > sampleStepperValueForIncrement){
print("increasing")
sampleStepperValueForIncrement += 1
let alert = UIAlertController(title: "Add A Guest", message: "Type full name the of guest you want to add below", preferredStyle: .alert)
let addGuest = UIAlertAction(title: "Add", style: .default) { (add) in
guard let user = Auth.auth().currentUser else { return }
db.document("student_users/\(user.uid)/guestTickets/guestDetails").setData(["guests": FieldValue.arrayUnion([textfield.text ?? "Nil"])], merge: true) { (error) in
if let error = error {
print("There was an error adding the name: \(error)")
} else {
print("name added successfully")
}
}
}
let dismiss = UIAlertAction(title: "Dismiss", style: .cancel) { (cancel) in
self.dismiss(animated: true, completion: nil)
self.guestNumberCount.text = String(Int(sender.value) - 1)
self.stepperValue.value -= 1
}
alert.addTextField { (alerttextfield) in
textfield = alerttextfield
alerttextfield.placeholder = "Guest Name"
alerttextfield.clearButtonMode = .whileEditing
}
alert.addAction(dismiss)
alert.addAction(addGuest)
present(alert, animated: true, completion: nil)
}
else {
print("decreasing")
sampleStepperValueForIncrement = sampleStepperValueForIncrement - 1
let alert = UIAlertController(title: "Remove A Guest", message: "Type the full name of the guest you want to remove. The guest name is case-sensitive and must equal the name you added.", preferredStyle: .alert)
let dismiss = UIAlertAction(title: "Dismiss", style: .cancel) { (cancel) in
self.dismiss(animated: true, completion: nil)
self.guestNumberCount.text = String(Int(sender.value) + 1)
self.stepperValue.value += 1
}
let removeGuest = UIAlertAction(title: "Remove", style: .destructive) { (remove) in
guard let user = Auth.auth().currentUser else { return }
db.document("student_users/\(user.uid)/guestTickets/guestDetails").updateData(["guests": FieldValue.arrayRemove([textfield2.text ?? "Nil"])]) { (error) in
if let error = error {
print("There was an error removing the name: \(error)")
} else {
print("name removed successfully")
}
}
}
alert.addTextField { (alerttextfield2) in
textfield2 = alerttextfield2
alerttextfield2.placeholder = "Guest Name"
alerttextfield2.clearButtonMode = .whileEditing
}
alert.addAction(dismiss)
alert.addAction(removeGuest)
present(alert, animated: true, completion: nil)
}
}
Обе проблемы связаны с действиями dismiss
как в операторе if
, так и в операторе else
. Я попытался добавить Decimal(sender.value) - 1
в одно действие закрытия, а затем Decimal(sender.value) + 1
в другое, но это не имело значения. То же самое происходит, когда у вас уже есть гость, и вы решаете удалить его, но в конечном итоге отклоняете предупреждение vc, цена также не возвращается. Странно то, что если я добавлю максимальное значение, равное 6, а затем снова удалю гостей до 1, цена вернется к исходной цене.
Любая помощь будет оценена, спасибо.