2016-11-10 44 views
0

我正在使用Xcode8中的swift3編寫應用程序。 我的應用程序實現了Cosmicmind-material-framework。Cosmicmind /材質:NavigationController和ToolbarController的區別

雖然工作我試圖瞭解NavigationController和ToolbarController之間的區別是什麼。 (也許有人可以向PageTabBarController解釋差異)

我不明白,因爲看起來navigationController包含toolbarController。 那麼,爲什麼我應該同時使用,如果我只能使用navigationController並準備所有「工具欄項目」那裏。

不久到該應用:

  • NavigationDrawerController
    • NavigationController
      1. 站點1
      2. 站點2
      3. PageTabBarController
        1. 網站紅
        2. 網站藍
        3. 網站黃色

回答

0

很好的問題。

NavigationController和ToolbarController的主要區別在於NavigationController是UINavigationController的子類,它爲您提供該類的所有優點,同時允許您自定義外觀,就像您將ToolbarController一樣。

ToolbarController提供了一種不同類型的流程,一種在視圖控制器之間使用transition方法轉換rootViewController。它還提供了一個浮動視圖控制器,可以有效地以多種方式使用。

與ToolbarController類似,PageTabBarController繼承自RootController,它提供了相同的rootViewController轉換,但默認情況下會提供一個UIPageViewController作爲初始rootViewController。

那麼所有這些不同的控制器有什麼意義呢?主要設計原因是允許您堆疊具有這些特殊控制的視圖控制器,以創建更復雜的導航架構,而無需維護其組織。在管理自己的代碼複雜性時,每個都可以在層次結構中訪問。用戶認爲他們都在無縫地一起工作。

一個很好的例子是CardTableView sample project,它也展示瞭如何使用基於內容的動態高度的TableView在PageTabBarController中設計卡片。大多數情況下,整個用戶界面都使用由Graph支持的持久數據進行驅動。

希望幫助:)

+0

許多感謝,在第一個爲快速響應 所以做了第一部分表示沒有必要對ToolbarController如果是使用NavigationController(並準備所有的「工具欄項「在NavCtrl中)? – Sandu

+0

是的,這是正確的:)你只需要一個或另一個根據您的導航需求。 – CosmicMind

+0

太棒了,這意味着我做到現在爲止:D我有另一個問題x)在我的星座(你見上面)我沒有一個NavigationController和PageTabBarController之間的直接連接。我現在的問題是,PageTabBarController影響NavigationController並清除所有的navigationCtrl項目,我不明白爲什麼x(。 – Sandu