У меня есть контроллер представления с обратной связью, доступ к которому осуществляется в 7 местах на 4 разных экранах.
Один из способов представить его в navigationController
через pushViewController
.Другие 6 раз он представлен модально.
Вот функция, которая открывает VC обратной связи
struct Constants{
static func openFeedback(openFrom: UIViewController, nav:Bool) {
let fbStoryboard = UIStoryboard(name: "FeedbackViewController", bundle: nil)
let fbVC = fbStoryboard.instantiateViewController(withIdentifier: "FBSBID")
fbVC.modalPresentationStyle = .overFullScreen
fbVC.modalTransitionStyle = .crossDissolve
if nav {
openFrom.navigationController?.pushViewController(fbVC, animated: true)
} else {
openFrom.present(fbVC, animated: true, completion: nil)
}
}
}
VC обратной связи вызывается с Constants.openFeedback(openFrom: self, nav: true)
или Constants.openFeedback(openFrom: self, nav: false)
Открытие ВК работает просто отлично!
Вот моя кнопка закрытия на контроллере представления обратной связи:
@IBAction func closeButtonPressed(_ sender: UIButton) {
self.dismiss(animated: true, completion: nil)
}
, которая работает 6 из 7 раз, когда нетв стеке навигации.Когда он находится в стеке навигации, кнопка закрытия ничего не делает.
Мой вопрос: как мне закрыть контроллер обратной связи, основываясь на том, находится ли он в стеке navigationController или нет?