У меня проблемы с пользовательскими оповещениями и отправкой действий обратно в VC, из которого было вызвано оповещение.
У меня есть два класса:
- Factory
- ConfirmationAllert
Путь пользователя, которого я пытаюсь достичь:
Пользователь выполняет действия в классе Factory
после завершенияЯ звоню ConfirmationAllert
, используя такой код:
func showAlert() {
let storyboard = UIStoryboard(name: "Main", bundle: nil)
let myAlert = storyboard.instantiateViewController(withIdentifier: "ConfirmationAllert")
myAlert.modalPresentationStyle = UIModalPresentationStyle.overCurrentContext
myAlert.modalTransitionStyle = UIModalTransitionStyle.crossDissolve
(view as? UIViewController)?.present(myAlert, animated: true, completion: nil)
}
В ConfirmationAllert
классе у меня есть кнопка, которая:
- отклоняет предупреждение
- отправляет действие Фабрика - это действие должно отменить Фабрика ВК и вернуться к предыдущему ВК.
Первое действие успешно завершено, второе действие не работает.Я использую протоколы для отправки второго действия на Factory
VC, но что-то не работает, и я не знаю, что.
Вот мой код:
Фабрика
final class FactoryViewController: UIViewController {
let alert = ConfirmationAllert()
@IBAction func didPressSave(_ sender: UIButton) {
showAlert()
}
func goToPreviousVc() {
alert.delegate = self
print("Inside factory") -> print don't get called
// navigationController?.popViewController(animated: true) -> none of this works
// dismiss(animated: true, completion: nil) -> none of this works
}
}
extension FactoryViewController: ConfirmationAllertDelegate {
func dismissVC() {
goToPreviousVc()
print("Go to previous")
}
}
ConfirmationAllert
protocol ConfirmationAllertDelegate {
func dismissVC()
}
class ConfirmationAllert: UIViewController {
var delegate: ConfirmationAllertDelegate?
@IBAction func didPressOk(_ sender: UIButton) {
self.delegate?.dismissVC()
}
}
Я не включил viewDidLoad
методы, поскольку я ничего там не вызываю.
Моя проблема в том, что метод goToPreviousVc()
не выполняет никаких действий.
Заранее благодарю за помощь!