【问题标题】:Presenting particular TabBarItem - iOS呈现特定的 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。

【问题讨论】:

    标签: ios swift uitabbarcontroller uitabbar uitabbaritem


    【解决方案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?
        • 它是一个视图控制器,如果存在,它可能会返回“更多”导航控制器。
        猜你喜欢
        • 2018-05-23
        • 1970-01-01
        • 2014-10-03
        • 2016-03-28
        • 2014-06-07
        • 1970-01-01
        • 1970-01-01
        • 2017-01-24
        • 1970-01-01
        相关资源
        最近更新 更多