I'm trying to set title of Navigation Bar
in Swift, I set Tab Bar
and in Navigation Bar
nothing is showing, no button, no title, nothing. I used some code but it's not working while I use Tab Bar
, and when I deleted Tab Bar
, code is working and everything is ok with Navigation Bar
, title is showing and buttons are showing.
Code that I used for title is:
override func viewDidLoad() {
super.viewDidLoad()
self.navigationItem.title = "My Title"
}
And in Main.storyboard
I connected Navigation Controller
with Tab Bar Controller
, as in picture.
So, how to fix this ? The problem is that Navigation Bar
is not working while using Tab Bar
.
Since the Tab Bar
is actually the Root View Controller
of the Navigation Bar
, you need to set the UITabBarController
's title
instead in the viewWillAppear
function so that it happens every time you switch tabs:
override func viewWillAppear(animated: Bool) {
super.viewWillAppear(animated)
self.tabBarController?.navigationItem.title = "My Title"
self.tabBarController?.navigationItem.leftBarButtonItem = settingsButton //This is the IBOutlet variable that you previously added
}
But a better way to do it would actually be to have it the other way around, like so
You should hook up a UINavigationController
for each child of the UITabBarController
, as it is more correct semantically, and simpler to maintain.