кнопка не отображается в элементе navigationBar

Я создал проект с шаблоном приложения на основе навигации, немного поработал и запустил его.

Я ожидал, что если я коснусь ячейки, появится новый вид, и новый значок (кнопка возврата) также появится на элементе панели навигации.

Но по какой-то причине «кнопка назад» не добавляется автоматически. В чем может быть проблема??

Ниже мой код.

- (void)tableView:(UITableView *)tableView didSelectRowAtIndexPath:(NSIndexPath *)indexPath {

    // Navigation logic may go here -- for example, create and push another view controller.
    MessageView *detailViewController = [[MessageView alloc] initWithNibName:@"MessageView" bundle:nil];

    NSDictionary* aMessage = [m_tableData objectAtIndex:indexPath.row];
    detailViewController.m_message = [[NSDictionary alloc] initWithDictionary:aMessage];

    // Pass the selected object to the new view controller.
    [self.navigationController pushViewController:detailViewController animated:YES];
    [detailViewController release];
}

person SeniorLee    schedule 23.02.2011    source источник
comment
Это представление (MessageView), которое вы вставили в навигационный контроллер? Вы можете нажать только UIViewController, но не UIView   -  person Nevin    schedule 23.02.2011


Ответы (3)


Вероятно, вы не дали своему родительскому контроллеру заголовок (просто self.title = @"my name" в viewDidLoad или viewWillAppear). Это то, что по умолчанию заполняется кнопкой «Назад», поэтому, если вы не назовете это, вы не получите кнопку «Назад».

person mackworth    schedule 23.02.2011
comment
Отличный совет! Вы сказали, что он заполняется по умолчанию. Просто любопытно, означает ли это, что вы можете дать кнопке «Назад» название, отличное от названия самого контроллера? Спасибо!!! - person jpswain; 18.07.2011
comment
Да, можно сделать свою кнопку (хоть в родительской), раз вызываемая кнопка назад видимо исправлена. Например, self.navigationItem.backBarButtonItem = [[[UIBarButtonItem alloc] initWithTitle:@Back style: UIBarButtonItemStyleBordered target:nil action:nil] autorelease]; - person mackworth; 19.07.2011

Вы говорите, что MessageView унаследован от UIView. Но я думаю, что если нет проблем с вставкой в ​​навигационный контроллер, то это будет подкласс UIViewController.

Есть несколько причин, по которым кнопка «Назад» не отображается:

1.) Как сказал Макворт, вы не указали ни одного заголовка, от которого вы отталкиваетесь.

2.) свойство кнопки «Назад» панели навигации установлено как скрытое.

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

person Rajender Kumar    schedule 23.02.2011
comment
Спасибо за ответ. Но я не могу принять более одного ответа ;( Просто дал это первому ответу, извините. - person SeniorLee; 23.02.2011

Кажется, вы не установили заголовок панели навигации в представлении, откуда вы перемещаетесь...

После того, как вы установите заголовок панели навигации по умолчанию, она покажет вам кнопку «Назад».

Используйте его либо в ViewDidLoad, либо в ViewWillAppear.

self.navigationItem.title=@"Укажите здесь свой заголовок";

person Ajay Sharma    schedule 23.02.2011
comment
Спасибо за ответ. Но я не могу принять более одного ответа ;( Просто дал это первому ответу, извините. - person SeniorLee; 23.02.2011