Programmatically setting tabBarItem title in Swift

Sam picture Sam · Dec 10, 2014 · Viewed 28.8k times · Source

I have four UIViewControllers that are linked to a UITabBarController's tab bar. I need to set the tab bar item titles outside of the storyboard, and inside of their classes.

I've tried..

class MyViewController: UIViewController {

    required init(coder aDecoder: NSCoder) {
        super.init(coder: aDecoder)

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

This is called, but the title is never set. Same with self.tabBarItem.title = "the title"

I've also tried setting the title in viewDidLoad, but that only updates the title after going to the view controller.

Thoughts?

Answer

keithbhunter picture keithbhunter · Dec 10, 2014

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"