1
self.navigationItem.backBarButtonItem = [[UIBarButtonItem alloc] initWithTitle:@"" style:UIBarButtonItemStylePlain target:self action:@selector(backButtonTapped)]; 

Это код, который я использую. Когда я нажимаю кнопку «Назад», метод backButtonTapped никогда не будет вызван (я положил на него точку останова), и я могу нажать на текст backButtonTapped, чтобы перейти к этому методу, поэтому я знаю, что он есть.Почему моя задняя кнопка не работает на iOS 7?

Однако, если я установил его на leftBarButtonItem, кнопка не появляется, но нажатие этой области возвращает меня обратно.

+0

есть ли метод параметр или нет? Действительно ли селектор действителен? – Wain

+0

Опечатка, опечатка, нет. –

+0

Что вы подразумеваете под селектором? –

ответ

2

Использование self.navigationItem.backBarButtonItem устанавливает обратно бар элемент кнопки для следующего вида контроллера (например SecondViewController), который получает натягивается на навигационном стек, а не для просмотра контроллера тока (например FirstViewController).

Если вы хотите установить кнопку «Назад» для контроллера вида, который в данный момент находится в стеке, установите его так же, как вы делали с leftBarButtonItem в текущем контроллере представления, или используйте backBarButtonItem в контроллере представления, который выталкивает это новое представление на стек.

Причина, почему ни одна кнопка не обнаружился, когда вы использовали leftBarButtonItem потому, что вы оставили название пустым вместо того, установив его на что-то вроде «Назад»

Примеры:

// Inside SecondViewController.m 
// 
// Customize left bar button item for SecondViewController 
// 
self.navigationItem.leftBarButtonItem = [[UIBarButtonItem alloc] initWithTitle:@"Back" style:UIBarButtonItemStylePlain target:self.navigationController action:@selector(popToRootViewControllerAnimated:)]; 

Или

// Inside FirstViewController.m 
// 
// Customize the back bar button item for SecondViewController 
// 
self.navigationItem.backBarButtonItem = [[UIBarButtonItem alloc] initWithTitle:@"Back" style:UIBarButtonItemStylePlain target:nil action:nil]; 

Обратите внимание, что вам не нужно устанавливать цель или действие для backBarButtonItem, так как он будет делать правильные действия.

0

Попробуйте следующее в методе viewDidLoad:

if ([self.navigationController.viewControllers count] > 1) 
{ 
    UIButton *backBtn = [UIButton buttonWithType:UIButtonTypeCustom]; 
    [backBtn setAdjustsImageWhenHighlighted:NO]; 
    [backBtn setShowsTouchWhenHighlighted:YES]; 
    [backBtn setContentHorizontalAlignment:UIControlContentHorizontalAlignmentLeft]; 
    UIImage *backBtnImage = [UIImage imageNamed:@"back.png"]; // <-- replace with your own image 
    [backBtn setImage:backBtnImage forState:UIControlStateNormal]; 
    [backBtn addTarget:self action:@selector(backButtonTapped) forControlEvents:UIControlEventTouchUpInside]; 
    backBtn.frame = CGRectMake(0, 0, 40, 40); 
    UIBarButtonItem *backBarBtnItem = [[UIBarButtonItem alloc] initWithCustomView:backBtn]; 
    self.navigationItem.leftBarButtonItem = backBarBtnItem; 
} 
Смежные вопросы