Выбранный элемент по умолчанию на вкладке не выделяется - PullRequest
1 голос
/ 13 июня 2019

Я использую TabBar с двумя элементами.Я создаю его в файле .xib и устанавливаю ViewControllers программно.Я могу выбрать VC по умолчанию с помощью:

    selectedIndex = 0

Теперь проблема заключается в том, что tabBar не выделяет значок выбранного элемента.

Я установил VC на viewBidCidroller viewDidLoad ():

    let firstViewController = FirstViewController(nibName: "FirstViewController", bundle: nil)
    let secondViewController = SecondViewController(nibName: "SecondViewController", bundle: nil)
    self.viewControllers = [firstViewController, secondViewController]

А вот код для создания элементов на каждом VC:

    let tabBarItem = UITabBarItem(title: "First", image: #imageLiteral(resourceName: "firstImage"), selectedImage: nil)
    self.tabBarItem = tabBarItem

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

РЕДАКТИРОВАТЬ:

Я добавляю три изображения.

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

Второй Один после нажатия на второй элемент, он показывает, но оба не выделены.

Третий один после выполнения еще одного касания, теперь, независимо от того, какое нажато, подсветка работает.

enter image description here

enter image description here

enter image description here

РЕДАКТ. 2:

Я добавил видео:

ЗДЕСЬ

Ответы [ 2 ]

1 голос
/ 13 июня 2019

Просто установите изображение и выбранное изображение на tabBarItem, см. Следующий код.

  let myTabBarItem1 = (self.tabBar.items?[0])! as UITabBarItem
  myTabBarItem1.image = UIImage(named: "Unselected")?.withRenderingMode(UIImageRenderingMode.alwaysOriginal)
  myTabBarItem1.selectedImage = UIImage(named: "Selected ")?.withRenderingMode(UIImageRenderingMode.alwaysOriginal)
  myTabBarItem1.title = "First"


  let myTabBarItem2 = (self.tabBar.items?[1])! as UITabBarItem
  myTabBarItem2.image = UIImage(named: "Unselected")?.withRenderingMode(UIImageRenderingMode.alwaysOriginal)
  myTabBarItem2.selectedImage = UIImage(named: "Selected")?.withRenderingMode(UIImageRenderingMode.alwaysOriginal)
  myTabBarItem2.title = "Second"

    for tabBarItem in tabBar.items! {
        tabBarItem.imageInsets = UIEdgeInsets(top: 6, left: 0, bottom: -6, right: 0)
    }
1 голос
/ 13 июня 2019

Вы должны назначить изображения для элемента tabInar selectedIndex соответственно, как показано ниже

  let myTabBarItem1 = (self.tabBar.items?[0])! as UITabBarItem
  myTabBarItem1.image = UIImage(named: "Unselected")?.withRenderingMode(UIImageRenderingMode.alwaysOriginal)
  myTabBarItem1.selectedImage = UIImage(named: "Selected ")?.withRenderingMode(UIImageRenderingMode.alwaysOriginal)
  myTabBarItem1.title = "First"


  let myTabBarItem2 = (self.tabBar.items?[1])! as UITabBarItem
  myTabBarItem2.image = UIImage(named: "Unselected")?.withRenderingMode(UIImageRenderingMode.alwaysOriginal)
  myTabBarItem2.selectedImage = UIImage(named: "Selected")?.withRenderingMode(UIImageRenderingMode.alwaysOriginal)
  myTabBarItem2.title = "Second"
...