Вопрос

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

self.navigationController.naviggationbar.backitem.title = @ "предыдущий";

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

Вы сейчас, почему это произошло?

Это было полезно?

Решение

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

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

[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];
}

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

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

Лицензировано под: CC-BY-SA с атрибуция
Не связан с StackOverflow
scroll top