Как мне создать UINavigationController с состоянием по умолчанию «назад»? - PullRequest
0 голосов
/ 28 октября 2010

У меня есть UINavigationController в комплекте с табличным представлением и связанной магией.

Данные, из которых я заполняю это табличное представление, могут содержать элементы из нескольких категорий, но для пользователя по умолчанию будет использоваться представление, в котором они просматривают все элементов, а затем они имеют возможность вернуться назад к другому табличному виду, который позволит им выбрать другую категорию, которая затем вернется к исходному табличному виду с заполненными соответствующими данными.

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

Кроме того, кнопка «Назад» должна называться «Группы», а не «Назад», но на самом деле это просто деталь реализации. :)

Обновление: Эта проблема наконец-то проявилась в рабочем коде, и вот как я ее исправил:

My UINavigationController создается в кончике с корневым представлением, установленным как представление «групп». Затем в моем делегате приложения я помещаю второе представление в стек во время запуска приложения.

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

Итак, на толчковом виде в viewDidLoad я установил:

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

и это добилось цели.

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

Еще одно обновление :

Я идиот. Просто установите title свойство navigationItem, предоставляемое navigationController в Интерфейсном Разработчике, и boom, без проблем. Или сделать это в коде. Это не имеет значения, просто не делайте этого, установив backItem.title, как я покажу вам выше. Это просто глупо.

1 Ответ

1 голос
/ 28 октября 2010

В файле .m делегата вашего приложения в приложении: didFinishLaunchingWithOptions: метод просто выдвигает ваши контроллеры представления, как вы обычно делаете это с [self.navigationController pushViewController:your_view_controller animated:YES];, и он должен выдвигать их до появления первого контроллера представления приложения.Чтобы изменить текст кнопки на Группы, просто позвоните, прежде чем нажимать на свои контроллеры .:

UIBarButtonItem *newBackButton = [[UIBarButtonItem alloc] initWithTitle: @"Groups" style: UIBarButtonItemStyleBordered target: nil action: nil];
[[self navigationItem] setBackBarButtonItem: newBackButton];
[newBackButton release];
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...