Cosmicmind/Material: NavigationController 和 ToolbarController 的区别

Cosmicmind/Material: difference between NavigationController and ToolbarController

我正在开发一个在 Xcode8 中使用 swift3 编写的应用程序。 我的应用程序实现了 Cosmicmind-material-framework。

在工作的同时,我试图了解 NavigationController 和 ToolbarController 之间的区别。 (也许有人也可以另外向 PageTabBarController 解释差异)

我不太明白,因为 navigationController 似乎包含一个 toolbarController。 那么,如果我只能使用 navigationController 并在那里准备所有 "toolbar-items",我为什么要同时使用两者。

即将进入应用程序:

好问题。

NavigationController 和 ToolbarController 之间的主要区别在于,NavigationController 是 UINavigationController 的子class,并为您提供 class 的所有好处,同时允许您自定义外观和感觉就像您使用 ToolbarController 一样。

ToolbarController 提供了一种不同类型的流程,一种使用 transition 方法在视图控制器之间转换 rootViewController 的流程。它还提供了一个可以以多种方式有效使用的浮动视图控制器。

与 ToolbarController 一样,PageTabBarController 继承自 RootController,它提供相同的 rootViewController 转换,但默认情况下提供一个 UIPageViewController 作为初始 rootViewController。

那么所有这些不同的控制器有什么意义呢?主要的设计原因是允许您堆叠具有这些特殊控件的视图控制器,以便创建更复杂的导航架构,而不必大惊小怪地维护它们的组织。每个都可以在层次结构中访问,同时管理自己的代码复杂性。用户感觉他们都在无缝地协同工作。

一个很好的例子是 CardTableView sample project,它还展示了如何使用具有基于内容的动态高度的 TableView 在 PageTabBarController 中布置卡片。在大多数情况下,整个 UI 都是使用由 Graph 提供支持的持久数据驱动的。

希望对您有所帮助:)