问题
I have a tabbed application with navigation controllers in tabs and view controller in them. All of them use the same navigation controller navigation bar: back button + logo image. Currently, I'm placing this code in every view controller:
- (void)viewDidLoad
{
[super viewDidLoad];
self.navigationItem.title = @"Back";
UIImage *headerImage = [UIImage imageNamed:@"Logo.png"];
self.navigationItem.titleView = [[[UIImageView alloc] initWithImage:headerImage] autorelease];
}
IMHO it's not the best way to do that. I'm thinking about using a category for UIViewController and to override viewDidLoad method, but every view controller has some additional code to execute in viewDidLoad, so I guess overriding is not the solution. What are the other ways?
回答1:
You could create a subclass of UIViewController
, MyViewControllerWithBackButtonAndLogo
(you can come up with a better name) then implement viewDidLoad
to set up the navigation item. Make all your view controllers inherit from this base class. Then just make sure the view controllers call [super viewDidLoad]
in their own implementations.
Also note that to set the back button title, you should not change the navigation item's title
property, but set an appropriate backBarButtonItem
.
来源:https://stackoverflow.com/questions/7846502/how-do-i-set-custom-navigation-bartitle-titleview-for-all-navigation-control