2017-08-15 186 views
1

我遵循CardTableView演示代碼及其嵌入視圖控制器的方式,以便FABMenuController處於頂層。出於某種原因,下面的代碼工作,直到我嘗試添加FABController:FABMenuController在視圖控制器之間共享FAB

let tabs = AppPageTabBarController(viewControllers:[InvitedViewController(), CoordinatingViewController(), PastViewController()]) 
let toolbar = AppToolbarController(rootViewController: tabs) 
let root = MyTeeUpsViewController(rootViewController: toolbar, leftViewController: NavDrawerContainerController()) 
let snackBarController = AppSnackbarController(rootViewController: root) 
let fabMenuController = AppFABMenuController(rootViewController: snackBarController) 
self.present(fabMenuController, animated: true) 

我剛剛實施了AppFABMenuController作爲演示代碼了,並且它的存在,並從FABMenuController從MaterialSwift繼承。我不明白爲什麼我得到的錯誤:fatal error: unexpectedly found nil while unwrapping an Optional value 關於視圖層次,我認爲它更有意義嵌入SnackbarController最後,但即使我做到這一點仍然沒有在聲明let fabMenuController=...

+0

什麼'MyTeeUpsViewController'做什麼,爲什麼你呈現視圖控制器,而不是將它們設置爲'AppDelegate'的rootViewController?請描述更多的設置目標,以便我可以進一步幫助您:) – CosmicMind

+0

appdelegates根視圖控制器是登錄視圖控制器。用戶登錄後,他可以看到他的teeups。 teeups viewcontroller具有導航抽屜,用於三種不同類型的teeup的頁面選項卡欄,用於呈現錯誤消息的快捷欄以及用於創建teeup的FAB – kinghenry14

回答

1

我就行了接近您的設置,像這樣:

let tabs = AppPageTabBarController(viewControllers:[InvitedViewController(), CoordinatingViewController(), PastViewController()]) 
let toolbar = AppToolbarController(rootViewController: tabs) 
let fabMenuController = AppFABMenuController(rootViewController: toolbar) 
let snackBarController = AppSnackbarController(rootViewController: fabMenuController) 
let navDrawer = MyTeeUpsViewController(rootViewController: snackBarController, leftViewController: NavDrawerContainerController()) 
self.present(navDrawer, animated: true) 

基本上,NavigationDrawerController應始終是最低水平,或視圖堆棧的根。如果您要使用登錄進行設置,則可以將NavigationDrawerController設置爲您的AppDelegates rootViewController,並禁用側面板。當用戶成功登錄時,您可以調用navigationDrawerController?.transition(至:MyNewVC),然後啓用側面板。通過這種方式,登錄視圖控制器不在堆棧中,所有設置都已設置。我將ToolbarController作爲FABMenuController的子項,以便您可以在控制器之間切換,並添加全新的頂部導航控制器或完全刪除它。材料的外觀通常在顯示FABMenu時覆蓋屏幕上的所有內容。小吃店可以在FABMenu的上面或下面,但這實際上取決於你,在視覺上,它不應該有任何區別。

請注意,在最新的Material 2.9。*中,不再需要轉換rootViewController類型,並且不再需要僅在子視圖控制器中搜索轉換控制器。這意味着,從任何地方,你可以現在打電話toolbarController?.transition ...等

希望這有助於:)

+0

謝謝!這非常有幫助! – kinghenry14

相關問題