Проверка Segue после того, как это началось - PullRequest
0 голосов
/ 31 августа 2018

У меня есть два UIViewController: A, B

Допустим, их соединяют два сегмента: C, D

Как только segue активирован, и я вижу B, могу ли я узнать, какой результат привел меня сюда? C или D?

Ответы [ 2 ]

0 голосов
/ 31 августа 2018

Я не знаю ни одного встроенного механизма для этого, но вы могли бы заставить все ваши контроллеры представления назначения соответствовать протоколу SourceSegueProtocol, который имеет переменную для хранения вызывающего перехода.

Затем в методе prepare(for:sender:) контроллера исходного представления вы можете установить эту переменную для контроллеров представления назначения, которые соответствуют SourceSegueProtocol.

0 голосов
/ 31 августа 2018

Существует функция подготовки (для: segue), которая позволяет вам установить свойство в новом ViewController.

class OriginViewController : UIViewController {

    ...

    override func prepare(for segue: UIStoryboardSegue, sender: Any?) {
        if let destination = segue.destination as? SegueProtocol {
            destination.transitionSegue = segue.identifier
        }
    }
}

class DestinationViewController : UIViewController, SegueProtocol {
    var transitionSegue: String = ""

    override func viewDidLoad() {
        print("Segue: ", transitionSegue)
    }
}

protocol SegueProtocol {
    var transitionSegue : String { get set }
}

Редактировать: Согласно предложению комментария, лучше ожидать назначения, которое соответствует протоколу, а не одному из определенного типа.

...