以编程方式将 NavigationController 添加到基于 TabBar 的应用程序
Adding NavigationController to TabBar based app programmatically
我在基于 customTabBar 的应用程序中有 6 个 viewController。 TabbBar 以编程方式添加。
现在我想添加一个 navigationcontroller 以推动详细视图控制器从 navigationBar 中受益,但将下面的 TabBar 作为在整个应用程序中导航的主要方式。
使用此代码,我获得了第一个带有屏幕导航栏的 uiviewcontroller "FirstVC",但我无法从测试按钮 "push" 详细信息 "FirstDetail1VC" 视图控制器
在我的 AppDelegate 中:
window = UIWindow(frame: UIScreen.main.bounds)
let myTabController = CustomTabbarController()
window?.rootViewController = myTabController
window?.makeKeyAndVisible()
在 my1VC 中(给出消息 "cannot push UINavigationController"):
func showNextVc() {
let storyboard : UIStoryboard = UIStoryboard(name: "Main", bundle: nil)
if let newViewController = storyboard.instantiateViewController(withIdentifier: "FirstDetail1VC") as? FirstDetail1VC {
let navigator = MyMainNavController {
navigator.pushViewController(newViewController, animated: true)
}
}
}
在 CustomTabbarController 中更新后:
let storyboard = UIStoryboard(name: "Main", bundle: nil)
let my1VC = storyboard.instantiateViewController(withIdentifier: "FirstVC")
let my2VC = storyboard.instantiateViewController(withIdentifier: "SecondVC")
let my3VC = storyboard.instantiateViewController(withIdentifier: "ThirdVC")
let my4VC = storyboard.instantiateViewController(withIdentifier: "FourthVC")
let my5VC = storyboard.instantiateViewController(withIdentifier: "FifthVC")
let my6VC = storyboard.instantiateViewController(withIdentifier: "SixthVC")
my2VC.tabBarItem = UITabBarItem(title: "second", image: nil, selectedImage: nil)
my3VC.tabBarItem = UITabBarItem(title: "third", image: nil, selectedImage: nil)
my4VC.tabBarItem = UITabBarItem(title: "fourth", image: nil, selectedImage: nil)
my5VC.tabBarItem = UITabBarItem(title: "fifth", image: nil, selectedImage: nil)
my6VC.tabBarItem = UITabBarItem(title: "sixth", image: nil, selectedImage: nil)
let controllers = [my1VC, my2VC, my3VC, my4VC,my5VC, my6VC]
// if I use this one, text titles appears on tab bar, but cannot use navigation controller
viewControllers = controllers
// if I use this I have the navigation controlelr working but
tabBarbuttons not showing text title
// self.viewControllers = controllers.map {
// UINavigationController(rootViewController: [=12=])
// }
设置所有 ViewController 的数组时,将 UINavigationController 分配给每个 UIViewController。
//Add NavigationController to all VC
viewControllers = [start, my1VC, my2VC, my3VC, my4VC,my5VC, my6VC].map {
UINavigationController(rootViewController: [=10=])
}
我在基于 customTabBar 的应用程序中有 6 个 viewController。 TabbBar 以编程方式添加。 现在我想添加一个 navigationcontroller 以推动详细视图控制器从 navigationBar 中受益,但将下面的 TabBar 作为在整个应用程序中导航的主要方式。
使用此代码,我获得了第一个带有屏幕导航栏的 uiviewcontroller "FirstVC",但我无法从测试按钮 "push" 详细信息 "FirstDetail1VC" 视图控制器
在我的 AppDelegate 中:
window = UIWindow(frame: UIScreen.main.bounds)
let myTabController = CustomTabbarController()
window?.rootViewController = myTabController
window?.makeKeyAndVisible()
在 my1VC 中(给出消息 "cannot push UINavigationController"):
func showNextVc() {
let storyboard : UIStoryboard = UIStoryboard(name: "Main", bundle: nil)
if let newViewController = storyboard.instantiateViewController(withIdentifier: "FirstDetail1VC") as? FirstDetail1VC {
let navigator = MyMainNavController {
navigator.pushViewController(newViewController, animated: true)
}
}
}
在 CustomTabbarController 中更新后:
let storyboard = UIStoryboard(name: "Main", bundle: nil)
let my1VC = storyboard.instantiateViewController(withIdentifier: "FirstVC")
let my2VC = storyboard.instantiateViewController(withIdentifier: "SecondVC")
let my3VC = storyboard.instantiateViewController(withIdentifier: "ThirdVC")
let my4VC = storyboard.instantiateViewController(withIdentifier: "FourthVC")
let my5VC = storyboard.instantiateViewController(withIdentifier: "FifthVC")
let my6VC = storyboard.instantiateViewController(withIdentifier: "SixthVC")
my2VC.tabBarItem = UITabBarItem(title: "second", image: nil, selectedImage: nil)
my3VC.tabBarItem = UITabBarItem(title: "third", image: nil, selectedImage: nil)
my4VC.tabBarItem = UITabBarItem(title: "fourth", image: nil, selectedImage: nil)
my5VC.tabBarItem = UITabBarItem(title: "fifth", image: nil, selectedImage: nil)
my6VC.tabBarItem = UITabBarItem(title: "sixth", image: nil, selectedImage: nil)
let controllers = [my1VC, my2VC, my3VC, my4VC,my5VC, my6VC]
// if I use this one, text titles appears on tab bar, but cannot use navigation controller
viewControllers = controllers
// if I use this I have the navigation controlelr working but
tabBarbuttons not showing text title
// self.viewControllers = controllers.map {
// UINavigationController(rootViewController: [=12=])
// }
设置所有 ViewController 的数组时,将 UINavigationController 分配给每个 UIViewController。
//Add NavigationController to all VC
viewControllers = [start, my1VC, my2VC, my3VC, my4VC,my5VC, my6VC].map {
UINavigationController(rootViewController: [=10=])
}