Скрыть — не показывать заднюю панель UINavigationBar?

#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. Проверьте это . Кажется, все работает нормально. Я делаю что-то другое?