Логотип YeaHub

База вопросов

Собеседования

Тренажёр

База ресурсов

Обучение

Навыки

Задачи

Войти

Выбери, каким будет IT завтра — вместе c нами!

YeaHub — это полностью открытый проект, призванный объединить и улучшить IT-сферу. Наш исходный код доступен для просмотра на GitHub. Дизайн проекта также открыт для ознакомления в Figma.

© 2026 YeaHub

AI info

Карта сайта

Документы

Медиа

Назад
Вопрос про Swift : coordinator, navigation, architecture

Как реализовать переключение между координаторами (например, между авторизацией и основным экраном)?

Вопрос проверяет умение применять паттерн координаторов (Coordinators) для навигации без прямых ссылок между контроллерами.

Короткий ответ

Создайте базовый протокол Coordinator с методами start() и свойством childCoordinators. Для экрана логина — AuthCoordinator, для основного — MainCoordinator. Когда логин успешен, из AuthCoordinator вызываете finish(), а из родительского AppCoordinator запускаете MainCoordinator и меняете корневой контроллер.

Длинный ответ

Протокол координатора:

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

AppCoordinator:

class AppCoordinator: Coordinator {
    	var window: UIWindow
    	var childCoordinators = [Coordinator]()

    	func start() {
        	if isLoggedIn { showMain() } else { showAuth() }
    	}
    	func showAuth() { /* создаём AuthCoordinator, start() */ }
    	func showMain() { /* создаём MainCoordinator, start() */ }
}

Переключение:

  • В AuthCoordinator после успешного входа:

    parent.childCoordinators.remove(self)
    parent.showMain()
  • Аналогично при логауте.

Преимущества:

  • Нет «мусора» в контроллерах.

  • Понятная ответственность: координатор берёт на себя навигацию.

Вывод:
Координаторы дают гибкость и лёгкость тестирования навигации, чётко разделяя зоны ответственности.

  • Аватар

    iOS Guru

    Roman Isakov

    Guru – это эксперты YeaHub, которые помогают развивать комьюнити.

Уровень

  • Рейтинг:

    2

  • Сложность:

    6

Навыки

  • Swift

    Swift

Ключевые слова

#coordinator

#navigation

#architecture

Подпишись на iOS Developer в телеграм

  • Аватар

    iOS Guru

    Roman Isakov

    Guru – это эксперты YeaHub, которые помогают развивать комьюнити.