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

Я нажимаю tableview в приложении на основе навигации. Отправляемое представление (viewOld) и отправляемое представление (viewNew) являются UITableViewControllers. Я дал viewNew название из viewOld. Как только появляется viewNew, я вижу заголовок, но слева нет кнопки «Назад». Не должна ли кнопка «Назад» появиться после того, как вы дадите представление (viewNew) его заголовок?

Я могу щелкнуть пустое место слева от панели навигации в viewNew и вернуться к viewOld. Но почему не видна кнопка «Назад»? Я делаю это в OS 3.0, но не думаю, что функциональность или поведение кнопки «Назад» изменились по сравнению с предыдущими версиями.

Нажатие viewNew из viewOld:

ViewNew * viewNew = [[ViewNew alloc] initWithNibName:@"ViewNew" bundle:nil];
viewNew = @"The new view";
[self.navigationController viewNew animated:YES];
[viewNew release];

person 4thSpace    schedule 04.10.2009    source источник


Ответы (2)


Кнопка «Назад» — это заголовок viewOld, если только navigationItem viewOld не имеет набора backBarButtonItem, который переопределяет его. Если viewOld не имеет заголовка и не имеет набора backBarButtonItem, кнопка "Назад" не появится.

Обратите внимание, что если вы хотите установить backBarButtonItem, его target и action должны оба быть nil.

person Ed Marty    schedule 04.10.2009
comment
Да, у меня не было названия для viewOld. Я пробовал это в viewNew, но не вижу текста Back: self.navigationItem.backBarButtonItem = [[[UIBarButtonItem alloc] initWithTitle:@Back style:UIBarButtonItemStyleBordered target:nil action:nil] autorelease]; Есть идеи, почему это не работает? - person 4thSpace; 04.10.2009
comment
backBarButtonItem должен быть установлен для viewOld, а не для viewNew. - person Ed Marty; 04.10.2009

У меня была та же проблема: текст кнопки «Назад» был скрыт, но работал при нажатии слева.

Итак, я нашел это:

Я только что видел это на днях. Что мне показалось интересным, так это то, что прикосновение в области, где должна работать кнопка «Назад», на самом деле работает. В конце концов я решил, что это связано с текстом кнопки «Назад». Он извлекает текст из заголовка родительского контроллера представления. Если нет заголовка, для кнопки нет текста, и, кажется, Apple заставила не отображать кнопку, если нет текста. Итак, либо укажите заголовок на родительском контроллере, либо, если вы этого не хотите, я считаю, что вы можете указать текст, который будет отображаться на кнопке «Назад» (это указано в родительском контроллере представления, а не в дочернем).

Это все!

person Fede Mika    schedule 28.07.2010