Я добавил элемент управления навигацией для переключения между представлениями в моем приложении. Но в некоторых представлениях не должно быть кнопки «Назад» (предыдущий заголовок). Есть идеи, как скрыть кнопку "Назад"?
Как скрыть кнопку «Назад» на панели навигации на iPhone?
Ответы (14)
Цель-C: self.navigationItem.hidesBackButton = YES;
Swift: navigationItem.hidesBackButton = true
self.navigationItem.leftBarButtonItem = nil;
. Если вы явно установили leftbarbuttonitem, вы можете использовать self.navigationItem.leftBarButtonItem = nil;
. self.navigationItem.hidesBackButton = YES;
скроет кнопку "Назад".
- person rakeshNS; 09.08.2012
Лучше всего их объединить, чтобы кнопка возврата была скрыта, даже если вы настроили ее вручную:
self.navigationItem.leftBarButtonItem=nil;
self.navigationItem.hidesBackButton=YES;
скрыть кнопку возврата с кодом ниже ...
[self.navigationItem setHidesBackButton:YES animated:YES];
или
[self.navigationItem setHidesBackButton:YES];
Также, если у вас есть собственный UINavigationBar
, попробуйте следующий код
self.navigationItem.leftBarButtonItem = nil;
В Swift:
Добавьте это в контроллер
override func viewDidLoad() {
super.viewDidLoad()
self.navigationItem.setHidesBackButton(true, animated: false)
}
Используйте код:
self.navigationItem.backBarButtonItem=nil;
В функции viewDidLoad UIViewController используйте код:
self.navigationItem.hidesBackButton = YES;
Не забывайте, что вам нужно вызвать его для объекта, у которого есть контроллер навигации. Например, если у вас есть навигационный контроллер, нажимающий на контроллер панели вкладок с помощью RootViewController, вызов self.navigationItem.hidesBackButton = YES
на RootViewController ничего не даст. Вам действительно нужно позвонить self.tabBarController.navigationItem.hidesBackButton = YES
Не забывайте, что теперь у нас есть жест скольжения назад. Вы, вероятно, захотите удалить и это. Не забудьте снова включить его, если необходимо.
if ([self.navigationItem respondsToSelector:@selector(hidesBackButton)]) {
self.navigationItem.hidesBackButton = YES;
}
if ([self.navigationController respondsToSelector:@selector(interactivePopGestureRecognizer)]) {
self.navigationController.interactivePopGestureRecognizer.enabled = NO;
}
"back button"
будут активированы смахиванием назад :) Также обратите внимание, что вам нужно будет включить обратно interactivePopGestureRezognizer
, как только пользователь покинет текущую сцену.
- person dvp.petrov; 22.01.2021
Добавьте этот код в свой контроллер представления
UIView *myView = [[UIView alloc] initWithFrame: CGRectMake(0, 0, 300, 30)];
UIBarButtonItem *btnL = [[UIBarButtonItem alloc]initWithCustomView:myView];
self.navigationItem.leftBarButtonItem = btnL;
Мне показалось, что ничего из вышеперечисленного не работает, это не имело визуального эффекта. Я использую раскадровки с представлением, которое «встроено» в контроллер навигации.
Затем я на уровне кода добавляю свои menuItems, и по какой-то причине «backButton» виден при визуальной отладке иерархии представлений, а мой значок menuItem отображается под невидимой «кнопкой возврата».
Я попробовал настройки, предложенные в различных методах перехвата, и это не дало результата. Затем я попробовал более жестокий подход и перебрал подпредставление, что также не дало результата.
Я проверил размеры своих иконок и все в порядке. Обратившись к руководству по человеческому интерфейсу Apple, я подтвердил, что мои значки верны. (В моем случае на 1 пиксель меньше 24px 48px 72px).
Самая странная часть - это собственно исправление ...
При добавлении элемента BarButton дайте ему заголовок, содержащий хотя бы один символ, в моем случае - пробел.
Надеюсь, это кому-то поможет.
//left menu - the title must have a space
UIBarButtonItem *leftButtonItem = [[UIBarButtonItem alloc] initWithTitle:@" " <--THE FIX
style:UIBarButtonItemStylePlain
target:self
action:@selector(showMenu)];
leftButtonItem.image = [UIImage imageNamed:@"ic_menu"];
[self.navigationItem setLeftBarButtonItem:leftButtonItem];
У меня не во всех случаях, когда я устанавливал
self.navigationItem.hidesBackButton = ДА;
в viewWillAppear или ViewDidLoad, но работал отлично, когда я устанавливал его в инициализации viewController.
попробуйте это - self.navigationController?.navigationItem.hidesBackButton = true
В C # или Xamarin.ios this.NavigationItem.HidesBackButton = true;
navigationItem.leftBarButtonItem = nil
navigationItem.hidesBackButton = true
если вы используете этот блок кода внутри didLoad или loadView работал, но не работал идеально. Если вы посмотрите внимательно, вы увидите, что кнопка «Назад» скрывается при загрузке вашего представления. Выглядит странно.
Какое идеальное решение?
Добавьте компонент BarButtonItem из componentView (Command + Shift + L) на целевую панель навигации viewControllers.
Выберите BarButtonItem set Title = "" на правой панели.