2013-11-01 2 views
-1

В раскадровке я создаю навигационную панель, используя «Вставить в».Как изменить изображение кнопки «Назад» на панели навигации?

Я пытаюсь заменить исходное изображение кнопки возврата, которая, как этот

enter image description here

моей кнопки назад изображение, которое

enter image description here

Как сделать это?

ответ

2

В контроллерах viewDidLoad способ добавить следующий код ..

UIImage *leftbuttonImage = [UIImage imageNamed:@"yourimagename"]; 
     UIButton *leftbutton = [UIButton buttonWithType:UIButtonTypeCustom]; 
     [leftbutton setImage:leftbuttonImage forState:UIControlStateNormal]; 
     leftbutton.frame = CGRectMake(0, 0, 35, 35); 
     [leftbutton addTarget:self action:@selector(showLeftMenuPressed:) forControlEvents:UIControlEventTouchUpInside]; 
     UIBarButtonItem *customBarleftItem = [[UIBarButtonItem alloc] initWithCustomView:leftbutton]; 

     self.navigationItem.leftBarButtonItem = customBarleftItem; 
+0

Привет, спасибо за ответ. В строке "[leftbutton addTarget: self action: @selector (showLeftMenuPressed :) forControlEvents: UIControlEventTouchUpInside];", xcode говорит, что showLeftMenuPressed не объявлен. Как я могу избавиться от него? – Zheng

+1

Извините, что не упоминайте, что .. замените showLeftMenuPressed: метод по вашему методу, который вы хотите вызвать на кнопку с обратной кнопкой. –

+0

Обратите внимание, что если вы замените кнопку «Назад», то жест жестка для перехода в iOS 7 перестанет работать. Некоторые решения здесь: http://stackoverflow.com/questions/19054625/changing-back-button-in-ios-7-disables-swipe-to-navigate-back –

2
UIButton *backBtn = [UIButton buttonWithType:UIButtonTypeCustom]; 
UIImage *backBtnImage = [UIImage imageNamed:@"BackBtn.png"] ; 
[backBtn setBackgroundImage:backBtnImage forState:UIControlStateNormal]; 
[backBtn addTarget:self action:@selector(goback) forControlEvents:UIControlEventTouchUpInside]; 
backBtn.frame = CGRectMake(0, 0, 54, 30); 
UIBarButtonItem *backButton = [[UIBarButtonItem alloc] initWithCustomView:backBtn] ; 
self.navigationItem.leftBarButtonItem = backButton; 

и объявить GoBack:

- (void)goback 
{ 
    [self.navigationController popViewControllerAnimated:YES]; 
} 
2
-(void)setUpNAvigationBackBarButton 
{ 

    UIImage* image3 = [UIImage imageNamed:@"icon_back.png"]; 
    CGRect frameimg = CGRectMake(0, 0, image3.size.width, image3.size.height); 
    UIButton *someButton = [[UIButton alloc] initWithFrame:frameimg]; 
    [someButton setBackgroundImage:image3 forState:UIControlStateNormal]; 
    [someButton addTarget:self action:@selector(YourMethod which you wanna call on back button 
     forControlEvents:UIControlEventTouchUpInside]; 


    UIBarButtonItem *mailbutton =[[UIBarButtonItem alloc] initWithCustomView:someButton]; 
    [self.navigationItem setLeftBarButtonItem:mailbutton animated:YES]; 
} 

просто вызвать эту функцию в viewdidLoad. Я использовал такую ​​же функцию в коде ma. работая хорошо .. вы можете использовать его.

0

Swift версия: -

self.navigationController?.navigationBar.backIndicatorImage = UIImage(named: "[email protected]") 
self.navigationController?.navigationBar.backIndicatorTransitionMaskImage = UIImage(named: "[email protected]") 
self.navigationItem.backBarButtonItem = UIBarButtonItem(title: "", style: UIBarButtonItemStyle.Plain, target: nil, action: nil) 

положить это на viewDidLoad()

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