У меня есть проект, использующий https://github.com/Orderella/PopupDialog для всплывающих диалогов, который работает очень хорошо.
Диалог создается следующим образом:
let ratingVC = PopupViewController(nibName: "PopupViewController", bundle: nil)
ratingVC.apiKey = self.apiKey
ratingVC.accountNumberString = accountNumberString
let popup = PopupDialog(viewController: ratingVC, buttonAlignment: .horizontal, transitionStyle: .bounceDown, gestureDismissal: true)
ratingVC.presentedPopup = popup
self.present(popup, animated: true, completion: nil)
, который позволяет работать с настраиваемым контроллером представления во всплывающем окне. В PopupViewController
PopupDialog может быть отклонен с помощью self.dismiss(animated: true)
Это работает хорошо, однако я не уверен, как запускающий контроллер представления (где выполняется self.present) получит уведомление о том, что PopupDialog был отклонен.
Я пытался
override func dismiss(animated flag: Bool, completion: (() -> Void)?)
{
super.dismiss(animated: flag, completion:completion)
}
В запущенном контроллере вида, но это не вызывается.