1

How can set self.navigationItem.backBarButtonItem of my RootViewController, so that the back button is rectangular instead of having a back arrow? I want to do this because I'm using a custom backBarButtonItem with an image of a grid of four squares (like the nine-square-gird image that the Facebook iPhone app uses for its home button).

Currently, in -[RootViewController initWitNibName:bundle:], I do:

self.navigationItem.backBarButtonItem =
[[UIBarButtonItem alloc] initWithImage:[UIImage imageNamed:@"go-home.png"]
                                 style:UIBarButtonItemStylePlain
                                target:nil action:NULL];

Note: This does not cause a memory leak as I'm using ARC.

But, this makes the button have a left arrow. Is there a simple fix to make the button rectangular on all sides?

I know I could set the leftBarButtonItem for all of the view controllers that can get pushed from the RootViewController, but there are like five different options, so that'd be a lot of repetition. I guess I could make a method, e.g., +[Utils homeBarButtonItem], that creates the button above and then call self.navigationItem.leftBarButtonItem = [Utils homeBarButtonItem]; in each of the five view controllers' -viewDidLoad methods, but I'm wondering if there's a simple fix I'm missing.

ma11hew28
  • 121,420
  • 116
  • 450
  • 651
  • sounds like you've spent more time thinking about this than just doing it as you describe ;) (there isn't a quicker way btw). – ader Sep 05 '11 at 16:00

1 Answers1

3

Sadly the only way, as you suggest, is to use a leftBarButtonItem and use a button builder utility class.

Set the action of your leftBarButtonItem to pop the view controller and you're done.

[self.navigationController popViewControllerAnimated:YES];
Matt Aitken
  • 141
  • 3