Перейти к содержимому
На этой странице

Множественные MVC

Все темы IOS Developer

Что представляет собой UITabBarController?

UITabBarController в Swift - это контроллер навигации, который предоставляет пользователю вкладки для навигации между различными разделами вашего приложения. Он обычно используется для организации главных разделов приложения, таких как “Главная”, “Профиль”, “Поиск” и т. д. UITabBarController отображает вкладки в нижней части экрана и управляет переходами между контроллерами представлений, связанными с каждой вкладкой.


Что представляет собой UISplitViewController?

UISplitViewController в Swift представляет собой контейнерный контроллер, который позволяет организовывать интерфейс в виде мастер-деталь, где на мастер-панели отображается список элементов, а на детальной - подробная информация о выбранном элементе. Это удобно для iPad и широкоэкранных устройств. Пользователь может выбирать элементы из списка в мастер-панели, а подробная информация отображается на детальной панели.


Что представляет собой UINavigationController?

UINavigationController в Swift - это контейнерный контроллер, который управляет стеком представлений (view controllers) и обеспечивает навигацию между ними в стиле стека. Он позволяет легко управлять переходами между представлениями, включая анимации перехода, добавление кнопок навигации и т. д.


Как вы организуете взаимодействие между несколькими MVC в вашем приложении?

Для взаимодействия между контроллерами можно использовать следующие подходы. В ответе о своём опыте выберите применявшийся вами способ и объясните его выбор.

  • Delegation: Передача данных и управление действиями с помощью протоколов и делегатов. Это позволяет одному контроллеру передавать данные другому, соблюдая инкапсуляцию.

  • NotificationCenter: Для передачи информации между MVC, которые не имеют прямой связи, можно использовать NotificationCenter. Это позволяет одному объекту отправлять уведомления, а другому объекту подписываться на них.

  • Segue и Prepare for Segue: Использование segue для передачи данных между контроллерами в Storyboard. Метод prepare(for:sender:) позволяет подготовить данные перед переходом.

  • Singleton: Для глобального доступа к данным можно использовать паттерн Singleton, однако его нужно применять осторожно, чтобы избежать проблем с тестированием и поддержкой кода.


Какие методы вы используете для передачи данных между различными MVC?

Методы передачи данных между MVC:

  1. Delegation:

    protocol DataDelegate {
        func didReceiveData(_ data: String)
    }
  2. NotificationCenter:

    NotificationCenter.default.post(name: .dataReceived, object: nil, userInfo: ["data": data])
  3. Segue и Prepare for Segue:

    override func prepare(for segue: UIStoryboardSegue, sender: Any?) {
        if let destinationVC = segue.destination as? DetailViewController {
            destinationVC.data = self.data
        }
    }
  4. Closures:

    var onDataReceived: ((String) -> Void)?

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

Смотри записи интервью, узнай, какие вопросы задают и как отвечают кандидаты.

Вопросы и ответы

Не нашли ответ? Напишите мне в чат. Я делаю Шпаргалку и сам отвечаю на сообщения. Расскажите, что не работает или чего вам не хватает. Может, смогу сразу взять это в работу.

Откуда взяты вопросы?

Из реальных собеседований. Основой подборки стал опыт Вадима Новосёлова: он проходил интервью и записывал вопросы. Подробнее о материалах.

Насколько эти вопросы актуальны?

Эти вопросы встречались нам на реальных собеседованиях в 2025 году. Мы регулярно проходим собеседования и пополняем подборку новыми вопросами. Основы профессии и ключевые технологии остаются востребованными годами, а детали конкретных инструментов и версий стоит сверять с текущей документацией.

На какой уровень рассчитана подборка?

Мы проходили собеседования на вакансии уровня Middle+, а иногда и на Senior-позиции. Вопросы из этих интервью вошли в подборку. Направления работы: iOS-разработчик, Swift-разработчик. Глубина обсуждения зависит от вакансии: будь готов объяснить основную идею, привести практический пример и разобрать ограничения и альтернативы решения.

Этот вопрос точно будет на моём собеседовании?

Гарантии нет: набор вопросов зависит от компании, задач команды, уровня вакансии и самого интервьюера. Эти вопросы уже встречались на реальных собеседованиях, но на твоём интервью ту же тему могут проверить другой формулировкой, практической задачей или обсуждением твоего опыта. Используй подборку, чтобы разобраться в теме: объясняй идею своими словами, приводи примеры и готовься обсудить ограничения и альтернативы решения. Так будет проще ответить и на знакомый вопрос, и на неожиданные уточнения.