O ViewController parece fazer a transição duas vezes

Resumo do Problema

Minha principal transição VC -> segundo VC parece funcionar duas vezes. No entanto, o estranho é que o viewDidLoad do segundo VC seja executado apenas uma vez. Esta é a única transição no meu projeto que tem esse problema.

Eu pesquisei isso e encontrei problemas de carregamento duas vezes, mas nenhum corresponde à minha transição duas vezes, mas o cenário carrega uma vez. Problemas comuns, como alguém que adicionou duas sequências no storyboard, não aparecem no meu projeto:

No meu primeiro controlador de exibição de raiz / (chamado mainVC), adiciono programaticamente um gesto de borda panorâmica no viewDidLoad:

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

Quando o usuário passa o gesto de movimento panorâmico, ele aciona uma função que chama uma sequência para o meu próximo VC. O problema é que a transição do VC aparece duas vezes e depois tudo funciona bem. Nada quebra ou trava. Se eu clicar no meu botão Voltar personalizado, o retorno ao mainVC será exibido apenas uma vez.

Experiência para lançar luz sobre a causa

Aqui está a parte estranha: na tentativa de entender o que foi entendido, inseri um código println e aqui está o que o console imprime:

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.

Essa primeira linha é a prepareForSegue em execução. Ele diz "não fez nada" porque no meu prepareForSegue verifica qual segue está sendo executado e às vezes passa algum código. Nesse caso, o prepareForSegue não faz nada além de imprimir essa linha.

A segunda linha é o viewDidLoad do segundo VC em execução.

A terceira linha parece estranha e fora de ordem para mim, mas não sou especialista. Que println está no mainVC e imprime a partir da função chamada pelo gesto de pan, esta é a função que acionou o segue em primeiro lugar. Por que isso não seria impresso antes do viewDidLoad do 2º VC ?:

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

A quarta linha é o prepareForSegue do mainVC executando pela segunda vez. No entanto, não vejo o console imprimindo uma segunda viewDidLoad, embora visualmente a transição ocorra duas vezes.

Alguma idéia do que poderia causar um comportamento tão estranho ou, pelo menos, alguns truques para impedir esse comportamento?

questionAnswers(4)

yourAnswerToTheQuestion