2012-02-23 5 views
0

Я хочу изменить изображение, название и цвет backButton в navigationBar. Вот код:Добавить изображение в панель навигации

UIButton* backButton = (UIButton *) [[UIImageView alloc] initWithImage:[UIImage imageNamed:@"BackButtonTopBar.png"]]; 
UIBarButtonItem *backButtonItem = [[UIBarButtonItem alloc] initWithCustomView:backButton]; 
self.navigationItem.leftBarButtonItem = backButtonItem; 

self.navigationController.navigationBar.tintColor = [UIColor blackColor]; 

UIImage *image = [UIImage imageNamed: @"TopBar.png"]; 
UIImageView *imageView = [[UIImageView alloc] initWithImage: image]; 
self.navigationItem.titleView = imageView; 

, но у меня есть некоторые проблемы:

  1. черный цвет не указывают
  2. задний изображение не работает

Так кто-то может мне помочь? Благодарю.

+0

Взгляните на эту страницу: [foobarpig.com] (http://foobarpig.com/iphone/uinavigationbar-with-solid-color-or-image-background.html) ** ИЗМЕНИТЬ: ** Видимо не работает на iOS 5.0 – Frade

ответ

1
UIButton * backButton = [UIButton buttonWithType:101]; 

[backButton setBackgroundImage:[UIImage imageNamed:BACK_BUTTON_IMAGE_NORMAL] forState:UIControlStateNormal]; 

    [backButton setBackgroundImage:[UIImage imageNamed:BACK_BUTTON_PRESSED] forState:UIControlStateHighlighted]; 
    UIView * backButtonView = [[UIView alloc] initWithFrame:CGRectMake(BACK_BUTTON_FRAME)]; 

    [backButton addTarget:self action:@selector(backButtonPressed) forControlEvents:UIControlEventTouchUpInside];  

    [backButtonView addSubview:backButton]; 

    UIBarButtonItem * backBarButton = [[UIBarButtonItem alloc] initWithCustomView:backButtonView]; 
    self.navigationItem.leftBarButtonItem = backBarButton; 

[backButtonView release]; 

[backBarButton release]; 
+0

Что значит «101»? Обращайте внимание на утечки памяти. Спасибо. –

+1

101 - тип кнопки BackButton. Левый конец будет закончен стрелкой, как наши обычные кнопки. – Sree

+0

Спасибо. Я не знал. –

0

Что означает эта строка кода?

UIButton* backButton = (UIButton *) [[UIImageView alloc] initWithImage:[UIImage imageNamed:@"BackButtonTopBar.png"]]; 

Если вам нужно создать кнопку, вам необходимо сделать следующее.

UIButton *button = [UIButton buttonWithType:UIButtonTypeCustom]; 

а затем установить для него фоновое изображение.

Но, как я предпочитаю, чтобы создать расширение категории для UIBarButtonItem как следующий

//UIBarButtonItem+YourPreferredName.h  
+ (UIBarButtonItem*)barItemWithImage:(UIImage*)image title:(NSString*)title target:(id)target action:(SEL)action; 

//UIBarButtonItem+YourPreferredName.m  
+ (UIBarButtonItem*)barItemWithImage:(UIImage*)image title:(NSString*)title target:(id)target action:(SEL)action 
{ 
    UIButton *button = [UIButton buttonWithType:UIButtonTypeCustom]; 
    button.frame = CGRectMake(0.0, 0.0, image.size.width, image.size.height); 
    button.titleLabel.textAlignment = UITextAlignmentCenter; 

    [button setBackgroundImage:image forState:UIControlStateNormal]; 
    [button setTitle:title forState:UIControlStateNormal]; 
    [button addTarget:target action:action forControlEvents:UIControlEventTouchUpInside]; 

    // additional customizations here... 

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

    return [barButtonItem autorelease];  
} 

Если импортировать UIBarButtonItem+YourPreferredName.h, где вам это нужно, то вы можете использовать как:

UIBarButtonItem* backBarButtonItem = [UIBarButtonItem barItemWithImage:[UIImage imageNamed:@"YoutImageName"] title:@"YourTitle" target:self action:@selector(goBack:)]; 

, где goBack может быть следующим:

- (void)goBack:(id)sender 
{ 
    // do stuff here 
} 

Надеюсь, что это поможет.

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