- What is the correct way to draw a custom UIBarButtonItem?
- CustomUIBarButtonItem *backButton = [[CustomUIBarButtonItem alloc] initWithTitle:@"NotÃcias" style:UIBarButtonItemStylePlain target:nil action:nil];
- self.navigationItem.backBarButtonItem = backButton;
- [backButton release];
- UIBarButtonItem *backButton = [[UIBarButtonItem alloc] initWithImage:[UIImage imageNamed:@"noticias_back.png"] style:UIBarButtonItemStyleBordered target:nil action:nil];
- self.navigationItem.backBarButtonItem = backButton;
- [backButton release];
- UIButton *searchButton = [UIButton buttonWithType:UIButtonTypeCustom];
- [searchButton setBackgroundImage:[UIImage imageNamed:@"search"] forState:UIControlStateNormal];
- [searchButton setBackgroundImage:[UIImage imageNamed:@"search_pressed"] forState:UIControlStateHighlighted];
- [searchButton addTarget:self action:@selector(selectedSearch) forControlEvents:UIControlEventTouchUpInside];
- [searchButton setImage:[UIImage imageNamed:@"search"] forState:UIControlStateNormal];
- [searchButton sizeToFit];
- self.navigationItem.rightBarButtonItem = [[UIBarButtonItem alloc] initWithCustomView:searchButton];
- ENPurchaseEditView *purchaseView = [[ENPurchaseEditView alloc] initWithNibName:@"ENPurchaseEditView" bundle:nil];
- // customized left button to cancel - not back.
- ENBarButtonImageItem *cancelBtn =
- [[ENBarButtonImageItem alloc] initWithFrame:CGRectMake(0, 0, 29, 29)
- image:[UIImage imageNamed:@"btn_cancel.png"]
- backgroundImage:nil
- target:purchaseView
- action:@selector(cancel:)];
- // setLeftBarButtonItem before you push or present.
- // in this view, I also setHidesBackButton = YES in the init so my custom left
- // shows up.
- [[purchaseView navigationItem] setLeftBarButtonItem:cancelBtn];
- [cancelBtn release];
- // Edit purchase in full modal view.
- // This could be a push - in my case I'm presenting a navController.
- UINavigationController *navController = [[UINavigationController alloc] initWithRootViewController:purchaseView];
- [[self navigationController] presentModalViewController:navController animated:YES];
- #import "ENBarButtonImageItem.h"
- @implementation ENBarButtonImageItem
- - (id)initWithFrame:(CGRect)frame
- image:(UIImage*)image
- backgroundImage:(UIImage*)bgImage
- {
- _button = [UIButton buttonWithType:UIButtonTypeCustom];
- [_button setFrame:frame];
- self = [super initWithCustomView:_button];
- if (self)
- {
- if (image)
- [_button setImage:image forState:UIControlStateNormal];
- if (bgImage)
- [_button setBackgroundImage:bgImage forState:UIControlStateNormal];
- }
- return self;
- }
- - (id)initWithFrame:(CGRect)frame
- image:(UIImage*)image
- backgroundImage:(UIImage*)bgImage
- target:(id)target
- action:(SEL)selector
- {
- self = [self initWithFrame:frame image:image backgroundImage:bgImage];
- if (self)
- {
- [_button addTarget:target action:selector forControlEvents:UIControlEventTouchUpInside];
- }
- return self;
- }
- - (void)dealloc
- {
- [super dealloc];
- [_button release];
- }
- - (void)addTarget:(id)target action:(SEL)selector forControlEvents:(UIControlEvents)controlEvents
- {
- [_button addTarget:target action:selector forControlEvents:controlEvents];
- }
- - (void)setImage:(UIImage *)image forState:(UIControlState)state
- {
- [_button setImage:image forState:state];
- }
- - (void)setBackgroundImage:(UIImage *)image forState:(UIControlState)state
- {
- [_button setImage:image forState:state];
- }
- @end