У меня есть одно приложение просмотра. Я нажимаю кнопку, и появляется пользовательское всплывающее окно (UIViewController) (Презентация: в текущем контексте). У меня также есть второе настраиваемое всплывающее окно (UIViewController), которое появляется (Презентация: поверх текущего контекста), если я нажимаю кнопку в первом всплывающем окне, которое закрывается и сразу же вызывает второе всплывающее окно. Моя проблема заключается в следующем: я не могу закрыть второе всплывающее окно и немедленно представить первое всплывающее окно с помощью кнопки во втором всплывающем окне. Я использую протокол / делегаты, чтобы появилось первое всплывающее окно, но не смог закрыть второе всплывающее окно и вернуть первое всплывающее окно. Я прокомментировал, где в какой строке я получаю ошибку.
class HomePage: UIViewController, popUpDismissedDelegate, CreateHashTagDelegate{
@IBAction func showFirtPopUp(_ sender: Any) {
let firstPopUpVC = storyboard?.instantiateViewController(withIdentifier:
"firstPopUp") as! FirstPopUp
firstPopUpVC.delegate = self
present(firstPopUpVC, animated: true, completion: nil)
}
// CUSTOM PROTOCOL DELEGATE FUNCTION
func popUpDimissed() {
// PRESENT SECOND POPUP
let secondPopUpVC = storyboard?.instantiateViewController(withIdentifier: "secondPopUp") as! SecondPopUp
present(secondPopUpVC, animated: true, completion: nil)
}
// PRESENT FIRST POPUP
func popUpCreateHTagDismissed() {
let firstPopUpVC = storyboard?.instantiateViewController(withIdentifier: "firstPopUp") as! FirstPopUp
present(firstPopUpVC, animated: true, completion: nil)
}
override func viewDidLoad() {
super.viewDidLoad()
let secondPopUpVC = storyboard?.instantiateViewController(withIdentifier: "createTag") as! SecondPopUp
secondPopUpVC.createHTagDelegate = self
}
}
protocol popUpDismissedDelegate {
func popUpDimissed()
class FirstPopUp: UIViewController{
var delegate: popUpDismissedDelegate!
// DISMISS FIRST POPUP AND PRESENT SECOND POPUP ON TOP OF THE HOMEPAGE
@IBAction func showFirtPopUp(_ sender: Any) {
self.dismiss(animated: true) {
self.delegate.popUpDimissed() // ** 2nd iteration
}
}
protocol CreateHashTagDelegate {
func popUpCreateHTagDismissed()
}
class SecondPopUp: UIViewController{
var createHTagDelegate: CreateHashTagDelegate!
// DISMISS SECOND POPUP AND PRESENT FIRST POPUP
@IBAction func showFirstPopUp(_ sender: Any) {
self.dismiss(animated: true, completion: {
self.createHTagDelegate.popUpCreateHTagDismissed() // I GET THE ERROR HERE 'Thread 1: Fatal error: Unexpectedly found nil while unwrapping an Optional value'
})
}
}