同时使用导航控制器和标签栏
Posted
技术标签:
【中文标题】同时使用导航控制器和标签栏【英文标题】:Use both navigation controller and tab bar 【发布时间】:2020-10-23 12:52:27 【问题描述】:我使用导航控制器来推送我的视图。像这样:
func showDetailForCategory(product: Category)
let storyBoard = UIStoryboard(name: "Main", bundle:nil)
let categoryViewController = storyBoard.instantiateViewController(withIdentifier: "categoryDetail") as! CategoryViewController
categoryViewController.categoryId = product.id
self.navigationController?.pushViewController(categoryViewController, animated:true)
它工作得很好。但我也想使用工具栏。我的AppDelegate
如下所示
let layout = UICollectionViewFlowLayout()
let featuredAppsController = FeaturedAppsController(collectionViewLayout: layout)
window?.rootViewController = UINavigationController(rootViewController: featuredAppsController)
let vc1 = featuredAppsController
vc1.tabBarItem.title = "Orange"
vc1.tabBarItem.image = UIImage(named: "heart")
// Set up the second View Controller
let vc2 = UIViewController()
vc2.view.backgroundColor = UIColor.purple
vc2.tabBarItem.title = "Purple"
vc2.tabBarItem.image = UIImage(named: "star")
// Set up the Tab Bar Controller to have two tabs
let tabBarController = UITabBarController()
tabBarController.viewControllers = [vc1, vc2]
// Make the Tab Bar Controller the root view controller
window?.rootViewController = tabBarController
window?.makeKeyAndVisible()
我添加了TabBarController
。它工作正常。但是我的NavigationController
不起作用。我认为这是因为我为其中两个设置了rootViewController
。我应该如何解决这个问题?感谢您的宝贵时间。
【问题讨论】:
【参考方案1】:你需要这样的东西
let firstVc = UIViewController()
let secondVc = UIViewController()
let firstNav = UINavigationController(rootViewController: firstVc)
let secondNav = UINavigationController(rootViewController: secondVc)
let tabBarController = UITabBarController()
tabBarController.viewControllers = [firstNav, secondNav]
window?.rootViewController = tabBarController
window?.makeKeyAndVisible()
当然,填写你的课程等等,但基本的想法是这样的
【讨论】:
我的导航栏仍然不起作用。当我按下按钮或其他东西时,我使用导航栏控制器推送视图。现在,只有工具栏控制器有效。 您应该在底部看到两个标签,每个标签都有一个视图。检查您是否以编程方式隐藏导航栏,如果没有,请检查您是否在其中一个导航栏上推送新控制器,会发生什么。如果什么都没有,那么就会发生一些大事,因为它应该非常简单并且开箱即用。以上是关于同时使用导航控制器和标签栏的主要内容,如果未能解决你的问题,请参考以下文章