Cosmicmind/Material: разница между NavigationController и ToolbarController
Я работаю над приложением, написанным с помощью swift3 в Xcode8. Мое приложение реализует Cosmicmind-material-framework.
Пока я работал, я пытался понять, в чем разница между NavigationController и ToolbarController. (возможно, кто-то может также объяснить разницу в PageTabBarController)
Я действительно не понимаю, потому что кажется, что navigationController содержит панель инструментов Controller. Так почему я должен использовать оба, если я могу только использовать navigationController и подготовить все "элементы панели инструментов" там.
Коротко о приложении:
- NavigationDrawerController
- NavigationController
- Сайт 1
- Сайт 2
- PageTabBarController
- Сайт Red
- Сайт Blue
- Сайт Желтый
- NavigationController
1 ответ
Хороший вопрос.
Основное различие между NavigationController и ToolbarController состоит в том, что NavigationController является подклассом UINavigationController и предоставляет вам все преимущества этого класса, позволяя вам настраивать внешний вид, как если бы вы использовали ToolbarController.
ToolbarController предоставляет другой тип потока, который перемещает rootViewController
с использованием transition
метод между контроллерами представления. Он также предоставляет плавающий контроллер вида, который может эффективно использоваться многими способами.
Как и ToolbarController, PageTabBarController наследуется от RootController, который обеспечивает тот же переход rootViewController, но по умолчанию предлагает UIPageViewController в качестве исходного rootViewController.
Так в чем же смысл всех этих разных контроллеров? Основная причина проектирования - позволить вам составлять контроллеры представления, которые имеют эти специальные элементы управления, для создания более сложных навигационных архитектур без необходимости поддерживать их организацию. Каждый из них доступен в иерархии при управлении своими сложностями кода. Пользователь чувствует, что все они работают без сбоев.
Хорошим примером этого является пример проекта CardTableView, который также показывает, как макетировать Карты в PageTabBarController с использованием TableViews, которые имеют динамические высоты на основе содержимого. По большей части весь пользовательский интерфейс управляется с использованием постоянных данных, основанных на Graph.
Надеюсь, это поможет:)