首页 > 解决方案 > 默认情况下,TabBar 上的选定项目未突出显示

问题描述

我正在使用带有两个项目的 TabBar。我在 .xib 文件上创建它并以编程方式设置 ViewControllers。我可以选择默认的 VC:

    selectedIndex = 0

现在的问题是 tabBar 没有突出显示选定的项目图标。

我在 TabBarController 的 viewDidLoad() 上设置了 VC:

    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 按预期显示。

第二个是在第二个项目上执行点击后,它显示但两者都没有突出显示。

第三个是再点击一次之后,现在,无论按哪个,突出显示都有效。

在此处输入图像描述

在此处输入图像描述

在此处输入图像描述

编辑2:

我添加了一个视频:

这里

标签: swiftxcodetabbarcontroller

解决方案


您必须将图像分配给 selectedIndex tabBar 项目,如下所示

  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"

推荐阅读