2012-05-14 5 views
0

Я не могу показаться, чтобы добавить изображение в этой UIBarButtonItem без него сбой при прикосновении:Установка UIImage к пункту UIBarButton

UIBarButtonItem *backButton = [[UIBarButtonItem alloc] initWithTitle:@"Back" 
                     style:UIBarButtonItemStylePlain target:nil action:nil]; 
     self.navigationItem.backBarButtonItem = backButton; 
     [backButton release]; 

этот код добавляет изображение, но он выходит из строя при прикосновении из-за несовместимого типы указателей относящие UIBarButtonItem * от UIButton:

//Setup Custom Button 

    UIButton *button = [[UIButton alloc] init]; 

    button.frame = CGRectMake(0,0,44,44); 

// [button addTarget:self action:@selector(showInfo) forControlEvents:UIControlEventTouchUpInside]; 

    self.navigationItem.backBarButtonItem = button; 

    [button setBackgroundImage:imgIcon forState:UIControlStateNormal]; 

    self.navigationItem.leftBarButtonItem = [[[UIBarButtonItem alloc] initWithCustomView:button] autorelease]; 

    [button release]; 

спасибо за любую помощь

+0

Как установить изображение? – DrummerB

+0

Я добавил еще несколько кодов. спасибо – hanumanDev

+0

'self.navigationItem.backBarButtonItem = button;' здесь проблема. –

ответ

1

Для вызова

self.navigationItem.leftBarButtonItem = [CustomBarButton createNavBackBarButtonItemWithTitle:NSLocalizedString(@"Back", @"") target:self action:@selector(actionBack:)]; 

CustomBarButton имеет функцию класса createNavBackBarButtonItemWithTitle

+(UIBarButtonItem *)createNavBackBarButtonItemWithTitle:(NSString *)t target:(id)tgt action:(SEL)a 
{ 
UIButton *button = [UIButton buttonWithType:UIButtonTypeCustom]; 
// Since the buttons can be any width we use a thin image with a stretchable center point 
UIImage *buttonImage = [[UIImage imageNamed:@"back_button_up.png"] stretchableImageWithLeftCapWidth:5 topCapHeight:0]; 
UIImage *buttonPressedImage = [[UIImage imageNamed:@"back_button_over.png"] stretchableImageWithLeftCapWidth:5 topCapHeight:0]; 


[[button titleLabel] setFont:[UIFont boldSystemFontOfSize:12.0]]; 
[button setTitleColor:[UIColor blackColor] forState:UIControlStateNormal]; 
[button setTitleColor:[UIColor blackColor] forState:UIControlStateHighlighted]; 
//[[button titleLabel] setShadowOffset:CGSizeMake(0.0, 1.0)]; 

CGRect buttonFrame = [button frame]; 
buttonFrame.size.width = [t sizeWithFont:[UIFont boldSystemFontOfSize:12.0]].width + 24.0; 
buttonFrame.size.height = buttonImage.size.height; 
[button setFrame:buttonFrame]; 

[button setBackgroundImage:buttonImage forState:UIControlStateNormal]; 
[button setBackgroundImage:buttonPressedImage forState:UIControlStateHighlighted]; 

[button setTitle:[NSString stringWithFormat:@" %@",t] forState:UIControlStateNormal]; 

[button addTarget:tgt action:a forControlEvents:UIControlEventTouchUpInside]; 

UIBarButtonItem *buttonItem = [[UIBarButtonItem alloc] initWithCustomView:button]; 

return [buttonItem autorelease]; 
} 
+0

спасибо! как это отображается в диспетчере представлений? – hanumanDev

+0

Отвечено обновлено. –

1

Вы должны установить ButtonStyle в custom не UIBarButtonItemStylePlain

, а затем [barbuttonitem setCustomView:anImageView];

Смежные вопросы