呈现特定的 TabBarItem - iOS
Posted
技术标签:
【中文标题】呈现特定的 TabBarItem - iOS【英文标题】:Presenting particular TabBarItem - iOS 【发布时间】:2019-01-23 06:25:50 【问题描述】:我有一个 UITabBarController
和四个 TabBaritem
,我在每个 ViewConrollers 中都有 leftMenu。左侧菜单选择导致呈现每个 ChildViewController。所以我使用 NavigationController 来呈现每个子视图控制器,同时点击左侧菜单行。
但问题是,选定的TabBarItem
不会改变,而新选定的TabBarItem
呈现在同一个ViewController
中,即我选择了ChildViewContrller
的控制器。
例如:如果我在 secVC 中并选择左侧菜单导航到 firstVC 它在 sec tabBarItem.and 出现 firstVc,如果我在一些功能之后 我再次点击 sec tabBarItem 它将显示 firstVC。但是我有 在 First tabBarItem 中显示 FirstVc
我的左侧菜单选择代码是,
if sender.tag == 0
let navVc = self.storyboard?.instantiateViewController(withIdentifier: "HomeVC")as? HomeVC
self.navigationController?.pushViewController(navVc!, animated: true)
else if sender.tag == 1
let navVc = self.storyboard?.instantiateViewController(withIdentifier: "TileDetailsVC")as? TileDetailsVC
navVc?.leftMenuPrdctId = 1
self.navigationController?.pushViewController(navVc!, animated: true)
else if sender.tag == 2
let navVc = self.storyboard?.instantiateViewController(withIdentifier: "OrderHistoryVC")as? OrderHistoryVC
self.navigationController?.pushViewController(navVc!, animated: true)
else if sender.tag == 3
let navVc = self.storyboard?.instantiateViewController(withIdentifier: "TileDetailsVC")as? TileDetailsVC
navVc?.leftMenuPrdctId = 3
self.navigationController?.pushViewController(navVc!, animated: true)
else if sender.tag == 5
let navVc = self.storyboard?.instantiateViewController(withIdentifier: "SettingsVC")as! SettingsVC
self.navigationController?.pushViewController(navVc, animated: true)
请任何人帮助我了解如何在点击左侧菜单行时呈现特定的 tabBarItem。
【问题讨论】:
【参考方案1】:您可以,正如 Diksha Bhargava 所说,只需更改 UITabBarController 的选定索引,新的视图控制器就会显示出来。改变选中的索引会改变选中的视图控制器,选中的视图控制器就是UITabBarController中显示的并且其tab被选中的那个。
因此更改 UITabBarController 的选定索引会更改视图控制器和选定选项卡。
这样做:
yourUITabBarController.selectedIndex=x
//where x is the index of the desired view controller
//in the array of viewControllers the tab bar has
(默认选择的视图控制器应该对应于选择的选项卡,包括它的变化)
实际上将在该选项卡上显示视图控制器,并在选项卡栏中使用其选项卡栏项目。 以编程方式更改标签栏控制器的显示视图控制器的简单方法。
您可以在 UITabController 上查看苹果的文档并查看以下信息:
选定索引
selectedViewController
【讨论】:
【参考方案2】:您可以直接导航到 tabar 控制器。试试这个:
let mainStoryboardIpad : UIStoryboard = UIStoryboard(name: "Main", bundle: nil)
let nav = mainStoryboardIpad.instantiateViewControllerWithIdentifier("tabBarController") as! UINavigationController
self.navigationcontroller.pushViewController(nav, animated: true)
【讨论】:
【参考方案3】:您必须将 tabBarController selectedIndex 设置为相应的选项卡编号。例如,如果您从选项卡 1 导航到选项卡 2,则必须将 selectedIndex = 1 设置为索引从 0 开始。所以 tab1 索引是 0 tab4 索引是 3 等等。例如:
yourTabBarController?.selectedIndex = 1 // put your desired index number here to change the selected tab bar item
希望对你有帮助!
【讨论】:
这只会改变选择颜色。请参考我编辑的问题(示例) 在设置选定索引后尝试将 selectedViewController 设置为 root 让 navController = yourTabBarController?.selectedViewController 为? UINavigationController navController?.popToRootViewController(animated: true) 这里选择了什么VC? 它是一个视图控制器,如果存在,它可能会返回“更多”导航控制器。以上是关于呈现特定的 TabBarItem - iOS的主要内容,如果未能解决你的问题,请参考以下文章
2 ViewControllers 以模态方式呈现 UITabBarController