странное поведение при изменении заголовка UIavigationController backItem - PullRequest
1 голос
/ 16 июня 2010

Я изменяю заголовок кнопки «Назад» в viewDidAppear контроллера следующим образом:

self.navigationController.navigationBar.backItem.title = @ "Previous";

Это правильно меняет название, но у меня странное поведение. Когда я выбираю «предыдущую» кнопку, она меняет название контроллера, находящегося в стеке (то есть родительский контроллер теперь имеет заголовок «Предыдущий».

Теперь вы понимаете, почему это произошло?

1 Ответ

0 голосов
/ 16 июня 2010

Когда вы используете контроллер навигации, вызываете [self setTitle: @ "Title"];Внутри любого контроллера представления в стеке будет установлен заголовок панели навигации.Это также заголовок, используемый по умолчанию для кнопки «Назад», когда вы нажимаете новый контроллер вида.Очевидно, из того, что вы испытываете, явно устанавливая заголовок backItem, также задает его для заголовка панели навигации для предыдущего контроллера представления, переопределяя все, что указано в вызове -setTitle в контроллере представления.

Возможно, вам будет лучше просто управлять заголовком из контроллеров представления в вашем стеке навигации.Когда вы собираетесь нажать новый контроллер вида, сделайте следующее:

[self setTitle:@"Previous"];
NextViewController *controller = [[NextViewController alloc] init];
[[self navigationController] pushViewController:controller animated:YES];
[controller release], controller = nil;

Теперь, когда отобразится следующий контроллер вида, кнопка «Назад» с надписью «Назад».Теперь вам просто нужно изменить его обратно на тот, который должен быть в реальном-названии в -viewWillAppear:

- (void)viewWillAppear:(BOOL)animated;
{
    [self setTitle:@"Real Title"];
    [super viewWillAppear:animated];
}

Это может показаться немного странным, но это лучше, чем пытаться переопределить функциональность панели навигации.Борьба со стеком навигационной панели / навигационного контроллера может оказаться очень неприятной.

С наилучшими пожеланиями.

...