Swift Academy · Aula

O Padrão Coordinator

Centralize a lógica do fluxo de navegação.

Aula 3 de 413 etapas

O Padrão Coordinator é uma aula grátis de Swift Academy no CoddyKit. Esta é a aula 3 de 4. Você pode ler a aula completa abaixo gratuitamente — depois pratica ao vivo no navegador com um editor de código integrado e um tutor de IA 24/7. Faz parte do caminho de aprendizado de Swift Academy, e seu progresso é sincronizado entre a web e o app CoddyKit. O curso de Swift Academy inclui 4 aulas no total.

O problema da navegação

Quando as telas empurram e apresentam outras telas diretamente, a lógica de navegação fica espalhada pelo aplicativo. Cada tela precisa conhecer a próxima, criando um acoplamento forte.

O padrão de coordenadores resolve isso extraindo a navegação para objetos dedicados.

O que é um coordenador

Um coordenador é um objeto cuja única função é gerenciar o fluxo de navegação. Ele decide qual tela vem em seguida e cria os controladores de visualização ou as telas que serão exibidos.

As telas deixam de se preocupar com o roteamento — elas apenas sinalizam eventos, e o coordenador decide o que fazer.

O protocolo de coordenadores

A maioria das implementações começa com um protocolo pequeno ao qual todo coordenador está em conformidade.

protocol Coordinator: AnyObject {
    var childCoordinators: [Coordinator] { get set }
    func start()
}

Um coordenador concreto

Um coordenador concreto possui um controlador de navegação e cria a primeira tela em start().

final class AppCoordinator: Coordinator {
    var childCoordinators: [Coordinator] = []
    let navigationController: UINavigationController

    init(navigationController: UINavigationController) {
        self.navigationController = navigationController
    }

    func start() {
        let vc = HomeViewController()
        navigationController.setViewControllers([vc], animated: false)
    }
}

Desacoplando telas do roteamento

O principal benefício: uma tela não constrói mais a próxima tela. Em vez disso, ela informa ao seu coordenador que um evento ocorreu, e o coordenador faz o roteamento.

Isso significa que uma tela pode ser reutilizada em diferentes fluxos sem alterar seu código.

Sinalizando eventos para cima

As telas se comunicam com seu coordenador por meio de um delegate ou de um fechamento. A tela não sabe para onde seguirá.

protocol HomeViewControllerDelegate: AnyObject {
    func homeDidSelectProfile()
}

final class HomeViewController: UIViewController {
    weak var delegate: HomeViewControllerDelegate?

    func profileTapped() {
        delegate?.homeDidSelectProfile()
    }
}

Processando a rota

O coordenador está em conformidade com o delegate e decide como navegar quando o evento é disparado.

extension AppCoordinator: HomeViewControllerDelegate {
    func homeDidSelectProfile() {
        let profile = ProfileViewController()
        navigationController.pushViewController(profile, animated: true)
    }
}

Coordenadores filhos

Fluxos grandes, como integração inicial e checkout, recebem seus próprios coordenadores filhos. O coordenador pai inicia um filho e o mantém em childCoordinators para que ele permaneça ativo.

func startOnboarding() {
    let child = OnboardingCoordinator(navigationController: navigationController)
    childCoordinators.append(child)
    child.start()
}

Evitando vazamentos de memória

Como o pai mantém os filhos, é necessário remover um filho quando o fluxo dele termina; caso contrário, ocorrerá um vazamento. Uma abordagem comum é usar uma chamada de conclusão.

func childDidFinish(_ child: Coordinator) {
    childCoordinators.removeAll { $0 === child }
}

Coordenadores com SwiftUI

No SwiftUI, os coordenadores geralmente controlam um caminho de NavigationStack. O coordenador possui um caminho observável, e as telas adicionam rotas a ele usando append.

final class Router: ObservableObject {
    @Published var path: [Route] = []

    func push(_ route: Route) {
        path.append(route)
    }
}

enum Route: Hashable { case profile, settings }

Resumo dos benefícios

O padrão de coordenadores oferece:

  • Telas reutilizáveis que não codificam a navegação diretamente
  • Lógica de fluxo centralizada que é fácil de alterar
  • Roteamento testável separado da interface
  • Fluxos composáveis por meio de coordenadores filhos

Verificação rápida

Verifique seu entendimento sobre coordenadores.

Resumo

Você aprendeu o padrão de coordenadores:

  • Os coordenadores são proprietários da navegação, mantendo as telas independentes do roteamento
  • As telas sinalizam eventos para cima por meio de delegates ou fechamentos
  • Os coordenadores filhos representam fluxos autocontidos
  • Remova os filhos quando os fluxos terminarem para evitar vazamentos

Combinados com MVVM, os coordenadores completam uma arquitetura limpa e testável.

Grátis para começar

Aprenda Swift com um tutor de IA — grátis

Escreva e execute código real no seu navegador, obtenha ajuda instantânea de um tutor de IA 24/7 e continue de onde parou na web ou no app.

Cursos
122
Aulas
409

Perguntas Frequentes

A aula “O Padrão Coordinator” é grátis?

Sim — o texto completo de “O Padrão Coordinator” é grátis para ler aqui na web. Para praticá-la interativamente (um editor de código integrado e um tutor de IA 24/7) e desbloquear o restante do curso de Swift Academy, atualize para CoddyKit PRO. O curso de Swift Academy inclui 4 aulas no total.

O que vou aprender em “O Padrão Coordinator”?

Centralize a lógica do fluxo de navegação. Você pratica Swift Academy com código prático que executa diretamente no navegador, e um tutor de IA 24/7 responde suas dúvidas enquanto trabalha na aula.

Preciso ter experiência prévia para começar Swift Academy?

Nenhuma experiência prévia é necessária. Swift Academy no CoddyKit é estruturado para alunos iniciantes até avançados, então você pode começar aqui ou desde o início e aprender no seu ritmo. Esta é a aula 3 de 4.

Quanto tempo leva a aula “O Padrão Coordinator”?

A maioria das aulas CoddyKit leva cerca de 5–10 minutos. Cada uma é compacta e interativa, então você faz progresso constante e retoma exatamente de onde parou entre web e app.

Posso escrever e executar código nesta aula de Swift Academy?

Sim. Cada aula de Swift Academy inclui um editor de código integrado, então você escreve e executa código real direto no navegador e recebe feedback de IA instantaneamente — nenhuma configuração local necessária.

Todas as aulas deste curso

  1. O Padrão MVVM
  2. Vinculação de Modelos de View a Views
  3. O Padrão Coordinator
  4. Testes de Modelos de View
← Voltar para Swift Academy