Cosmicmind/Material: разница между NavigationController и ToolbarController

Я работаю над приложением, написанным с помощью swift3 в Xcode8. Мое приложение реализует Cosmicmind-material-framework.

Пока я работал, я пытался понять, в чем разница между NavigationController и ToolbarController. (возможно, кто-то может также объяснить разницу в PageTabBarController)

Я действительно не понимаю, потому что кажется, что navigationController содержит панель инструментов Controller. Так почему я должен использовать оба, если я могу только использовать navigationController и подготовить все "элементы панели инструментов" там.

Коротко о приложении:

  • NavigationDrawerController
    • NavigationController
      1. Сайт 1
      2. Сайт 2
      3. PageTabBarController
        1. Сайт Red
        2. Сайт Blue
        3. Сайт Желтый

1 ответ

Решение

Хороший вопрос.

Основное различие между NavigationController и ToolbarController состоит в том, что NavigationController является подклассом UINavigationController и предоставляет вам все преимущества этого класса, позволяя вам настраивать внешний вид, как если бы вы использовали ToolbarController.

ToolbarController предоставляет другой тип потока, который перемещает rootViewController с использованием transition метод между контроллерами представления. Он также предоставляет плавающий контроллер вида, который может эффективно использоваться многими способами.

Как и ToolbarController, PageTabBarController наследуется от RootController, который обеспечивает тот же переход rootViewController, но по умолчанию предлагает UIPageViewController в качестве исходного rootViewController.

Так в чем же смысл всех этих разных контроллеров? Основная причина проектирования - позволить вам составлять контроллеры представления, которые имеют эти специальные элементы управления, для создания более сложных навигационных архитектур без необходимости поддерживать их организацию. Каждый из них доступен в иерархии при управлении своими сложностями кода. Пользователь чувствует, что все они работают без сбоев.

Хорошим примером этого является пример проекта CardTableView, который также показывает, как макетировать Карты в PageTabBarController с использованием TableViews, которые имеют динамические высоты на основе содержимого. По большей части весь пользовательский интерфейс управляется с использованием постоянных данных, основанных на Graph.

Надеюсь, это поможет:)

Другие вопросы по тегам