Desbobinar seguealguns detalhes técnicos
Antes de concluir este artigo quero ver o que o tempo de execução está a fazer debaixo do capô.
Localizar o destino é basicamente uma subida na hierarquia do controlador de visualização. O controlador de visualização atual ou apresentandoViewController será o próximo.
Em cada parada, o tempo de execução também tem que verificar se o controlador de visualização tem algum filho porque o método de desenrolar pode estar contido em um desses. Isso é feito chamando o método permitidoChildrenForUnwinding(from:), que retorna um array de UIViewControllers que são filhos do controller de visualização.
No entanto, não queremos verificar o branch que contém o controller de visualização do código fonte, já que acabamos de vir de lá. Isso é evitado chamando o método childContaining(_:), que retorna o controller child view que contém a fonte da sequência de desenrolar. Isso é removido do array.
Se o array retornado contém algum filho, o processo acima também é executado neles. Ele chega ao fim se o destino for encontrado.
Se o array retornado estiver vazio, o método canPerformUnwindSegueAction(_:from:sender:) é chamado, que verifica se o controlador de visualização contém o método de desenrolar.
Se o fizer, nós chegamos ao nosso destino e o processo é finalizado. Se não chegar, subimos um passo na hierarquia do view controller e executamos os mesmos passos.
Conclusion
Espero que você tenha gostado deste pequeno tutorial sobre desenrolar segue, obrigado por dedicar um tempo para lê-lo.