#ios #uinavigationcontroller #back-button
#iOS #uinavigationcontroller #кнопка возврата
Вопрос:
Я хочу сделать что-то вроде этого.Все контроллеры помещаются в навигационный контроллер. ViewController 1 -> ViewController 2 (Не показывать кнопку «Назад», которая появляется автоматически при нажатии) -> ViewController 3 (Показывать кнопку «Назад» панели навигации) -> ViewController 4 (снова скрыть кнопку «Назад» панели).
Я попытался установить для заголовка значение empty для viewController1, но затем кнопка «Назад» нигде не появляется в приложении. Также я попытался установить для кнопки back bar значение nil, прежде чем нажимать ViewController2 в стеке навигации. Но ничего не работает так, как ожидалось. Кто-нибудь знает, как это сделать. Примечание — Я хочу, чтобы кнопка «Назад» по умолчанию появлялась, когда мы нажимаем ViewController на stack, а не на элемент «Кнопка левой панели». Если опция не оставлена, я предпочту подход к элементу кнопки левой панели.
Ответ №1:
Я уже делал нечто подобное раньше. В контроллере, который будет нажимать на следующий контроллер просмотра, в котором вы не хотите, чтобы кнопка возврата была, поместите это везде, где вы выполняете свой pushViewController:
myNextViewController.navigationItem.hidesBackButton = YES;
[self.navigationController pushViewController:myNextViewController animated:YES];
В вашем случае это было бы в 1-м и 3-м ViewControllers в стеке.
Комментарии:
1. это скрывает кнопку «Назад» и для следующего контроллера. В моем случае ViewController3 также не показывает кнопку возврата
2. Что, если вы поставите:
myThirdViewController.navigationItem.hidesBackButton = NO;
перед нажатием на нее?3. Я тоже пробовал это, но это не сработало. Вы можете попробовать это сами.
4. Я попробую создать пример проекта и посмотреть, как у меня получится. Я удивлен, что это не работает.
Ответ №2:
hidesBackButton
Подход показывает анимацию нажатия кнопки задней панели. Каким бы маленьким, как вы сказали, это не кажется правильным. Грязный вариант переадресации состоял бы в том, чтобы сделать это в контроллере родительского представления.
- (void)viewWillAppear:(BOOL)animated
{
[super viewWillAppear:animated];
self.title = @"Title";
}
- (void)viewWillDisappear:(BOOL)animated
{
[super viewWillDisappear:animated];
self.title = @"";
}
Оригинальный ответ
Вам нужно будет добавить это в контроллеры просмотра, где вы хотите скрыть кнопку «Назад». Довольно понятно.
self.navigationItem.hidesBackButton = YES;
Комментарии:
1. это скрывает кнопку «Назад» во всем приложении. даже когда я устанавливаю для него значение true, кнопка возврата не отображается. Я уже пробовал этот подход.
2. Где вы это установили? Я только что протестировал это, и, похоже, оно работает так, как ожидалось.
3. Я установил это в методе viewDidAppear viewDidAppear ViewController2
4. Я хочу, чтобы иногда она появлялась, а иногда исчезала. в view controller2, поскольку я снова использую viewcontroller2 где-то в моем приложении, мне нужно, чтобы кнопка back bar отображалась.
5. Проверьте это . Кажется, все работает нормально. Я делаю что-то другое?