Представление конкретного TabBarItem - iOS - PullRequest
0 голосов
/ 23 января 2019

У меня есть UITabBarController с четырьмя TabBaritem, и я оставил Menu в каждом ViewConrollers.Выбор левого меню приводит к представлению каждого ChildViewController.Поэтому я использовал NavigationController, чтобы представить каждый дочерний контроллер представления, нажимая на левые строки меню.Но проблема в том, что выбранный TabBarItem не изменяется, а новый выбранный TabBarItem отображается в том же ViewController том, какой контроллер я выбрал ChildViewContrller.

например: если я нахожусь вsecVC и выберите левое меню для перехода к первому виртуальному каналу, он представляет firstVc в sec tabBarItem.и после некоторой функциональности, если я снова нажму sec tabBarItem, он покажет первый виртуальный канал.Но я должен показать FirstVc в First tabBarItem

Мой код выбора левого меню:

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 при нажатии левой строки меню.

Ответы [ 3 ]

0 голосов
/ 23 января 2019

Вы можете, как сказал Дикша Бхаргава, просто изменить выбранный индекс UITabBarController, и отобразится новый контроллер представления.Изменение выбранного индекса изменит выбранный контроллер представления, и выбранный контроллер представления является тем, который отображается в UITabBarController и чья вкладка выбрана.

Таким образом, изменение выбранного индекса UITabBarController изменяет контроллер представления и выбранную вкладку.

Таким образом:

yourUITabBarController.selectedIndex=x
//where x is the index of the desired view controller 
//in the array of viewControllers the tab bar has

(по умолчанию выбранный контроллер представления должен соответствовать выбранной вкладке, в том числе при его изменении)

будет фактически отображать контроллер представления на этой вкладкеи использовать его элемент панели вкладок в панели вкладок.Простой способ программно изменить отображаемый контроллер представления контроллера панели вкладок.

Вы можете проверить документы Apple на UITabController и посмотреть информацию о:

selectedIndex

selectedViewController

0 голосов
/ 29 марта 2019

Вы можете перейти к Tabar Controller напрямую.Попробуйте это:

 let mainStoryboardIpad : UIStoryboard = UIStoryboard(name: "Main", bundle: nil)
        let nav = mainStoryboardIpad.instantiateViewControllerWithIdentifier("tabBarController") as! UINavigationController
       self.navigationcontroller.pushViewController(nav, animated: true)
0 голосов
/ 23 января 2019

Вы должны установить 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

Надеюсь, это поможет !!

...