Swift 默认情况下,选项卡栏上的选定项不会高亮显示

Swift 默认情况下,选项卡栏上的选定项不会高亮显示,swift,xcode,tabbarcontroller,Swift,Xcode,Tabbarcontroller,我正在使用一个带有两个项目的选项卡栏。我在一个.xib文件上创建它,并通过编程设置ViewController。我可以使用以下选项选择默认VC: selectedIndex = 0 现在的问题是选项卡栏没有突出显示所选项目图标 我在TabBarController的viewDidLoad()上设置VC: 下面是在每个VC上创建项目的代码: let tabBarItem = UITabBarItem(title: "First", image: #imageLiteral(res

我正在使用一个带有两个项目的选项卡栏。我在一个.xib文件上创建它,并通过编程设置ViewController。我可以使用以下选项选择默认VC:

    selectedIndex = 0
现在的问题是选项卡栏没有突出显示所选项目图标

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

下面是在每个VC上创建项目的代码:

    let tabBarItem = UITabBarItem(title: "First", image: #imageLiteral(resourceName: "firstImage"), selectedImage: nil)
    self.tabBarItem = tabBarItem
默认情况下,不只是选定的索引不高亮显示,有时它只显示其中一个,直到我点击选项卡栏

编辑:

我添加了三个图像

第一个加载VC后立即获取一个。未点击任何项目,按程序选择索引0,VC按预期显示

第二个一个是在轻触第二个项目后显示的,但两个项目均未突出显示

第三个一个是在再点击一次之后,现在,无论按下哪一个,高亮显示都会工作

编辑2:

我添加了一个视频:


您必须相应地将图像分配给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"

只需将图像和所选图像设置为
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)
    }

您将
selectedImage
分配到
tabbarItem
的位置?我不分配它。我已经尝试过了,它会在选中图像时更改图像,然后在未选中时返回到另一个图像。但是突出显示问题仍然存在。请尝试
tabbar.selectedIndex=0
?在
TabBarController
类写入
self.selectedIndex=0
。不要制作另一个
tabbarItem
,因为您已经在
xib
中进行了设置。self.selectedIndex=0已经在我的tabBarController类中。“我真的不明白你想说什么对不起。”泰格·蒙蒂的回答很有帮助。我认为问题在于在每个VC上创建选项卡项,所以TabBar直到第一次加载时才知道第二个VC有什么图标。谢谢你的帮助。好的,它成功了。我只需要删除选定的图像行,因为我真的不想更改它。如果我只指定图像,选项卡栏本身在选中时使用高亮显示的图标,在未选中时使用“禁用”版本的图标。我不知道是否有“更干净”的方法,但到目前为止,它的工作,谢谢。
  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)
    }