Don't like ads? PRO users don't see any ads ;-)
Guest

Untitled

By: a guest on May 27th, 2012  |  syntax: None  |  size: 3.58 KB  |  hits: 21  |  expires: Never
download  |  raw  |  embed  |  report abuse  |  print
Text below is selected. Please press Ctrl+C to copy to your clipboard. (⌘+C on Mac)
  1. What is the correct way to draw a custom UIBarButtonItem?
  2. CustomUIBarButtonItem *backButton = [[CustomUIBarButtonItem alloc] initWithTitle:@"Notícias" style:UIBarButtonItemStylePlain target:nil action:nil];
  3. self.navigationItem.backBarButtonItem = backButton;
  4. [backButton release];
  5.        
  6. UIBarButtonItem *backButton = [[UIBarButtonItem alloc] initWithImage:[UIImage imageNamed:@"noticias_back.png"] style:UIBarButtonItemStyleBordered target:nil action:nil];
  7. self.navigationItem.backBarButtonItem = backButton;
  8. [backButton release];
  9.        
  10. UIButton *searchButton = [UIButton buttonWithType:UIButtonTypeCustom];
  11. [searchButton setBackgroundImage:[UIImage imageNamed:@"search"] forState:UIControlStateNormal];
  12. [searchButton setBackgroundImage:[UIImage imageNamed:@"search_pressed"] forState:UIControlStateHighlighted];
  13. [searchButton addTarget:self action:@selector(selectedSearch) forControlEvents:UIControlEventTouchUpInside];
  14. [searchButton setImage:[UIImage imageNamed:@"search"] forState:UIControlStateNormal];
  15. [searchButton sizeToFit];
  16.  
  17. self.navigationItem.rightBarButtonItem = [[UIBarButtonItem alloc] initWithCustomView:searchButton];
  18.        
  19. ENPurchaseEditView *purchaseView = [[ENPurchaseEditView alloc] initWithNibName:@"ENPurchaseEditView" bundle:nil];
  20.  
  21. // customized left button to cancel - not back.
  22. ENBarButtonImageItem *cancelBtn =
  23. [[ENBarButtonImageItem alloc] initWithFrame:CGRectMake(0, 0, 29, 29)
  24.                                       image:[UIImage imageNamed:@"btn_cancel.png"]
  25.                             backgroundImage:nil
  26.                                      target:purchaseView
  27.                                      action:@selector(cancel:)];  
  28.  
  29. // setLeftBarButtonItem before you push or present.
  30. // in this view, I also setHidesBackButton = YES in the init so my custom left
  31. // shows up.
  32. [[purchaseView navigationItem] setLeftBarButtonItem:cancelBtn];
  33. [cancelBtn release];    
  34.  
  35. // Edit purchase in full modal view.
  36. // This could be a push - in my case I'm presenting a navController.
  37. UINavigationController *navController = [[UINavigationController alloc] initWithRootViewController:purchaseView];
  38. [[self navigationController] presentModalViewController:navController animated:YES];
  39.        
  40. #import "ENBarButtonImageItem.h"
  41.  
  42. @implementation ENBarButtonImageItem
  43.  
  44. - (id)initWithFrame:(CGRect)frame
  45.               image:(UIImage*)image
  46.     backgroundImage:(UIImage*)bgImage
  47. {
  48.     _button = [UIButton buttonWithType:UIButtonTypeCustom];
  49.     [_button setFrame:frame];
  50.  
  51.     self = [super initWithCustomView:_button];
  52.     if (self)
  53.     {
  54.         if (image)
  55.             [_button setImage:image forState:UIControlStateNormal];
  56.  
  57.         if (bgImage)
  58.             [_button setBackgroundImage:bgImage forState:UIControlStateNormal];
  59.  
  60.     }
  61.     return self;    
  62. }
  63.  
  64. - (id)initWithFrame:(CGRect)frame
  65.               image:(UIImage*)image
  66.     backgroundImage:(UIImage*)bgImage
  67.              target:(id)target
  68.              action:(SEL)selector
  69. {
  70.     self = [self initWithFrame:frame image:image backgroundImage:bgImage];
  71.     if (self)
  72.     {
  73.         [_button addTarget:target action:selector forControlEvents:UIControlEventTouchUpInside];
  74.     }
  75.  
  76.     return self;
  77. }
  78.  
  79. - (void)dealloc
  80. {
  81.     [super dealloc];
  82.     [_button release];
  83. }
  84.  
  85. - (void)addTarget:(id)target action:(SEL)selector forControlEvents:(UIControlEvents)controlEvents
  86. {
  87.     [_button addTarget:target action:selector forControlEvents:controlEvents];
  88. }
  89.  
  90. - (void)setImage:(UIImage *)image forState:(UIControlState)state
  91. {
  92.     [_button setImage:image forState:state];
  93. }
  94.  
  95. - (void)setBackgroundImage:(UIImage *)image forState:(UIControlState)state
  96. {
  97.     [_button setImage:image forState:state];
  98. }
  99.  
  100. @end