Reputation: 6280
I have a UIViewController
embedded in a UINavigationController
. The rootViewController
now contains already some buttons as leftBarButtonItems
.
Now when I push a new UIViewController
on top of the UINavigationController
I want the new UIViewController
to keep the existing leftBarButtonItems
extended with the Back
-Button.
Right now the situations is as follows: When I push the new UIViewController
then the existing leftBarButtonItems
disappear and only the Back
-Button is visible.
Upvotes: 0
Views: 176
Reputation: 63934
I found what seems like a hacky way to get around this when pushing multiple instances of the same view controller on to a detail view controller which I assume would work similarly. Before pushing the new view controller I used this: (browser is my new view controller)
self.browser.navigationItem setLeftBarButtonItem:self.detailViewController.navigationItem.leftBarButtonItem animated:YES]; // Sets popover view controller button.
[self.detailViewController.navigationController pushViewController:self.browser animated:YES];
This probably isn't a good way to do it but it seems to work in my situation.
Upvotes: 0
Reputation: 2039
Each UIViewController has it's own "navigationItem" property, which acts as the navigation bar representation for that viewcontroller. When you add buttons to the navigationItem of a particular UIViewController they are limited in scope to the viewcontroller to which they were added, and they don't persist into other viewcontrollers.
Basically, you'll have to add the buttons to the navigationItem of each viewcontroller as it loads. You can make this simpler by writing adding a method to do this work to a class other than your UIViewControllers. What happens when you touch each button might be viewcontroller specific though, so you'll have to think through how touch actions will be fed back to the relevant viewcontroller. Perhaps introduce some kind of NavigationBarDelegate protocol or something?
Upvotes: 1