Получить уведомление о прекращении PopupDialog в контроллере представления - PullRequest
0 голосов
/ 09 мая 2018

У меня есть проект, использующий 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)

    }

В запущенном контроллере вида, но это не вызывается.

Ответы [ 2 ]

0 голосов
/ 09 мая 2018

На основе документов PopupDialog, которые вы используете, кнопки всплывающего окна имеют блоки завершения, в которых вы можете отследить, будет ли закрыто диалоговое окно или нет.

ИЛИ Самый простой способ сделать это сейчас - добавить блок завершения в PopupDialog экземпляре.

Вот так:

От:

let popup = PopupDialog(viewController: ratingVC, buttonAlignment: .horizontal, transitionStyle: .bounceDown, gestureDismissal: true)

Кому:

let popup = PopupDialog(viewController: ratingVC, buttonAlignment: .horizontal, transitionStyle: .bounceDown, gestureDismissal: true) {
    print("PopupDialog has been dismissed! ✅")
}

Дайте мне знать, если это поможет!

0 голосов
/ 09 мая 2018

Вы можете создать PopupViewControllerDelegate, как тот, который описан в этом SO-ответе , что-то вроде этого.

protocol PopupViewControllerDelegate:class {
    func viewControllerDidDismiss(_ sender: PopupViewController)
}

class PopupViewController: UIViewController {
     ...
     weak var delegate: PopupViewControllerDelegate?
     ...
}

и вызовите его, когда ViewController будет закрыт.

Затем реализуйте протокол PopupViewControllerDelegate в запускающем контроллере представления и установите его при создании PopupViewController:

let ratingVC = PopupViewController(nibName: "PopupViewController", bundle: nil)
ratingVC.delegate = self
...
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...