How to create backBarButtomItem with custom view for a UINavigationController
cocoa-touch
Solution
I'm fairly certain that the `backBarButtonItem` is a read-only property. Instead of modifying the `backBarButtonItem`, try setting a custom `leftBarButtonItem` and hide the `backBarButtonItem`:
self.navigationItem.leftBarButtonItem = [[[UIBarButtonItem alloc] initWithTitle:@"Prout" style:UIBarButtonItemStyleDone target:nil action:nil] autorelease];
self.navigationItem.hidesBackButton = YES;
You will also need to make sure you hook up the custom button to call the back action on the `UINavigationBar`.
Problem
I have a `UINavigationController` into which I push several views. Inside `viewDidLoad` for one of these views I want to set the `self.navigationItem.backBarButtonItem` to a custom view (based on a custom image). I don't know why, but it doesn't seem to work. Instead, I get the standard "back" button. ``` UIButton *backButton = [[UIButton alloc] initWithFrame:CGRectMake(0, 0, 63, 30)]; [backButton setImage:[UIImage imageNamed:@"back_OFF.png"] forState:UIControlStateNormal]; [backButton setImage:[UIImage imageNamed:@"back_ON.png"] forState:UIControlStateSelected]; UIBarButtonItem *backButtonItem = [[UIBarButtonItem alloc] initWithCustomView:backButton]; self.navigationItem.backBarButtonItem = backButtonItem; [backButtonItem release]; [backButton release]; ``` I tested with a standard title and it worked. What is wrong with the above code ? ``` self.navigationItem.backBarButtonItem = [[[UIBarButtonItem alloc] initWithTitle:@"Prout" style:UIBarButtonItemStyleDone target:nil action:nil] autorelease]; ``` Thanks for any help on this.