Changing selectedImage on UITabBarItem in Swift

matcartmill picture matcartmill · Jan 11, 2015 · Viewed 7.8k times · Source

I've been trying to change the selected image on a UITabBar. I've followed procedures listed on other Stackoverflow questions, but nothing seems to work.

I have tried setting the image through the User Defined Runtime Attributes section, as well as tried adding the following to AppDelegate.swift:

var tabBarController = self.window!.rootViewController as UITabBarController
let tabItems = tabBarController.tabBar.items as [UITabBarItem]

var selectedImage0 = UIImage(named:"NewsfeedTabSelected")
selectedImage0?.imageWithRenderingMode(UIImageRenderingMode.AlwaysOriginal)
tabItems[0].selectedImage = selectedImage0

This doesn't yield any results. I did a println(tabItems[0].title) and that output the correct title, so I know that the reference to the TabBarItem is working.

Any thoughts?

Answer

Olav Gausaker picture Olav Gausaker · Feb 14, 2015

I solved using something like this on the AppDelegate.

var tabBarController = self.window!.rootViewController as UITabBarController
var tabBar = tabBarController.tabBar as UITabBar

var tabBarItem1 = tabBar.items![0] as UITabBarItem
var tabBarItem2 = tabBar.items![1] as UITabBarItem
var tabBarItem3 = tabBar.items![2] as UITabBarItem

tabBarItem1.selectedImage = UIImage(named: "FirstSelectedImage")
tabBarItem2.selectedImage = UIImage(named: "SecondSelectedImage")
tabBarItem3.selectedImage = UIImage(named: "ThirdSelectedImage")