我正在关注CardTableView演示代码及其嵌入视图控制器的方式,以便FABMenuController位于顶部。出于某种原因,以下代码有效,直到我尝试添加FABController:
...
"dependencies": {
...
},
...
"jest": {
"globals": {
"__TEST__": true
},
"moduleNameMapper": {
"\\.(css|jpg|png)$": "<rootDir>/empty-module.js",
"^raw-loader": "<rootDir>/empty-module.js"
},
"testPathIgnorePatterns": [
"/node_modules/"
],
"verbose": true
}
}
我已经实现了AppFABMenuController,就像演示代码一样,并且它存在,并且继承自MaterialSwift的FABMenuController。我无法理解为什么会收到错误: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)
关于视图层次结构,我认为最后嵌入SnackbarController更有意义,但即使我这样做,它仍然在声明fatal error: unexpectedly found nil while unwrapping an Optional value
的行上失败
答案 0 :(得分: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(to:MyNewVC),然后启用侧面板。通过这种方式,登录视图控制器不在堆栈中,一切都已设置完毕。我将ToolbarController作为FABMenuController的子项,以便您可以在控制器之间切换,并添加一个全新的顶部导航控制器或完全删除它。材料的外观通常涵盖显示FABMenu时屏幕上的所有内容。 Snackbar可以高于或低于FABMenu,但这完全取决于你,在视觉上,它不应该有所作为。
注意,在最新的Material 2.9。*中,您不再需要强制转换rootViewController类型,并且不再需要仅为转换控制器搜索子视图控制器。意思是,你可以在任何地方调用toolbarController?.transition
......等等。
希望这会有所帮助:)