ViewController появляется для перехода дважды

Краткое описание проблемы

Мой mainVC -> второй переход VC, кажется, запускается дважды. Однако странным является то, что viewDidLoad второго VC запускается только один раз. Это единственный переход в моем проекте, который имеет эту проблему.

Я исследовал это и обнаружил проблемы с двойной загрузкой, но ни одна из них не соответствует моему переходу дважды, но сценарий загрузки один раз. Общие проблемы, например, когда кто-то добавил два сегмента в раскадровку, не отображаются в моем проекте:

В моем первом / корневом контроллере представления (называемом mainVC) я программно добавляю жест панорамирования края в viewDidLoad:

        let panLeftEdgeGesture_MainVC = UIScreenEdgePanGestureRecognizer(target: self, action: "panLeftEdge_toLifeList:")
        panLeftEdgeGesture_MainVC.edges = .Left
        view.addGestureRecognizer(panLeftEdgeGesture_MainVC)

Когда пользователь смахивает этот жест панорамирования, он запускает функцию, вызывающую переход к моему следующему VC. Проблема в том, что переход VC появляется дважды, а затем все работает нормально после этого. Ничто не ломается и не падает. Если я нажму на свою пользовательскую кнопку возврата, откат назад к mainVC появится только один раз.

Эксперимент, чтобы пролить свет на причину

Вот странная часть: пытаясь понять, что было понятно, я вставил некоторый код println и вот что печатает консоль:

No matching prepareForSegue: So did nothing to prepare.
LifeList_CollectionView viewDidLoad did run
Pan segue from mainVC to Life Lists did run
No matching prepareForSegue: So did nothing to prepare.

Эта первая строка - запуск prepareForSegue. Он говорит «ничего не сделал», потому что в моем prepareForSegue он проверяет, какой segue запущен, и иногда он пропускает некоторый код. В этом случае prepareForSegue ничего не делает, кроме как печатает эту строку.

Вторая строка - это viewDidLoad второго ВК.

Третья строка кажется мне странной и не в порядке, но я не эксперт. То, что println находится в mainVC и печатает из функции, вызываемой жестом панорамирования, это функция, которая в первую очередь запускает переход. Почему бы это не напечатать до viewDidLoad 2-го ВК ?:

func panLeftEdge_toLifeList(sender: UIScreenEdgePanGestureRecognizer) {
    performSegueWithIdentifier("segueToLifeLists", sender: nil)
    println("Pan segue from mainVC to Life Lists did run")
}

Четвертая строка - это второй цикл подготовкиForSegue для основного контроллера. Тем не менее, я не вижу консоли, печатающей второй viewDidLoad, хотя визуально я вижу, что переход происходит дважды.

Любая идея, что может вызвать такое странное поведение или, по крайней мере, какие-либо уловки, чтобы остановить это поведение?

Ответы на вопрос(4)

Ваш ответ на вопрос