Programmatically setting tabBarItem title in Swift Programmatically setting tabBarItem title in Swift swift swift

Programmatically setting tabBarItem title in Swift


You can set the tab titles in the view controllers themselves in viewDidLoad by setting the view controller's title property.

title = "Number 0"

Alternatively, if want to set the titles from your tab bar controller, you can set them like this in your tab bar controller's viewDidLoad:

tabBar.items?[0].title = "Number 0"tabBar.items?[1].title = "Number 1"


I figured it out, looks like it was being over written by awakeFromNib().

override func awakeFromNib() {    super.awakeFromNib()    self.title = NSLocalizedString(MyConstants.StringKeys.TabName, tableName: Constants.Strings.MyTable, comment: Constants.EmptyString);}

I moved my self.title assignment there and it corrected my issue.


I've been trying different solutions but the only one what worked for me was adding the tab bar set up the code in the viewWillAppear method in the UITabBarController. I don't do it in each view controller individually because it works only when the tab bar button is pressed:

override func viewWillAppear(_ animated: Bool) {    super.viewWillAppear(animated)    guard let items = tabBar.items else { return }    items[0].title = "Title0"    items[1].title = "Title1"    items[2].title = "Title2"    items[3].title = "Title3"}