Функция делегата UIViewController, которая определяет поп - PullRequest
0 голосов
/ 14 мая 2018

У меня есть 3 ViewController в стеке навигации, которые являются ViewControllerA, ViewControllerB и ViewControllerC.

Когда я нажимаю кнопку возврата из ViewControllerB, я достигаю ViewControllerA.

Я хочу проверить, как я достиг ViewControllerA, возвращаясь назад или как rootViewController из стека навигации.

Ответы [ 2 ]

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

Составьте протокол:

protocol DismissProtocol{
func dismissPresentedViewControllerComplete()
}

Мы заставим viewControllerA соответствовать этому протоколу.

Сделаем свойство в ViewControllerB типа DismissProtocol.

class ViewControllerB: UIViewController{

var delegate: DismissProtocol?
//............

}

Когда вы представляете ваш ViewControllerB, назначьте ViewControllerA в качестве делегата.

class SecondController: UIViewController{
var delegate: DismissProtocol?

Переопределите метод протокола в ViewControllerA:

extension ViewControllerA: DismissProtocol{
func dismissPresentedViewControllerComplete() {
    // Do what you want to do when you return from ViewControllerB
}
}

Теперь, в завершении завершения ViewControllerB, выполните этот метод переопределения:

        self.dismiss(animated: false) {
        self.delegate?.dismissPresentedViewControllerComplete()
    }
0 голосов
/ 14 мая 2018

вы можете дать вашей backButton функцию размотки и перехватить ее в контроллере вида.

@IBAction func unwindToView(unwindSegue: UIStoryboardSegue) {
    if let XControllerView = unwindSegue.sourceViewController as? XController {
        print("Coming from XControllerView")
    }
    else if let YControllerView = unwindSegue.sourceViewController as? YController {
        print("Coming from YControllerView")
    }
}

Для получения дополнительной информации о раскрутке: https://developer.apple.com/documentation/uikit/uiviewcontroller/1621473-unwind

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...