Как скрыть кнопку «Назад» на панели навигации iPhone?
-
03-07-2019 - |
Вопрос
Я добавил элемент управления навигацией для переключения между представлениями в своем приложении.Но в некоторых представлениях не должно быть кнопки «Назад» (предыдущее название).Есть идеи, как скрыть кнопку «Назад»?
Решение
Цель-С:
self.navigationItem.hidesBackButton = YES;
Быстрый:
navigationItem.hidesBackButton = true
Другие советы
Лучший способ - объединить их, чтобы скрыть кнопку «Назад», даже если вы настроили ее вручную:
self.navigationItem.leftBarButtonItem=nil;
self.navigationItem.hidesBackButton=YES;
скрыть кнопку возврата с кодом ниже ...
[self.navigationItem setHidesBackButton:YES animated:YES];
или
[self.navigationItem setHidesBackButton:YES];
Кроме того, если у вас есть пользовательский UINavigationBar
, попробуйте следующий код
self.navigationItem.leftBarButtonItem = nil;
Используйте код:
self.navigationItem.backBarButtonItem=nil;
В Swift :
Добавьте это в контроллер
override func viewDidLoad() {
super.viewDidLoad()
self.navigationItem.setHidesBackButton(true, animated: false)
}
В функции viewDidLoad UIViewController используйте код:
self.navigationItem.hidesBackButton = YES;
Не забывайте, что вам нужно вызывать его для объекта, у которого есть контроллер nav. Например, если у вас есть навигационный контроллер, который нажимает на контроллер панели вкладок с 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;
}
Добавьте этот код в свой контроллер представления
UIView *myView = [[UIView alloc] initWithFrame: CGRectMake(0, 0, 300, 30)];
UIBarButtonItem *btnL = [[UIBarButtonItem alloc]initWithCustomView:myView];
self.navigationItem.leftBarButtonItem = btnL;
Для меня ничего из вышеперечисленного не сработало, оно не имело визуального эффекта. Я использую раскадровки с "встроенным" представлением в контроллере навигации.
Затем я добавляю свои элементы menu на уровне кода и по какой-то причине " backButton " отображается при визуальной отладке иерархии представлений, а моя иконка menuItem отображается под невидимой кнопкой «назад».
Я попробовал настройки, как предлагалось в различных методах подключения, но это не имело никакого эффекта. Затем я попробовал более жестокий подход и перебрал подпредставление, которое также не имело никакого эффекта.
Я проверил размеры своих значков и, кажется, был в порядке. После ссылки на Apple Human Interface Guideline я подтвердил, что мои иконки правильные. (В моем случае на 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 = YES;
в viewWillAppear или ViewDidLoad, но работал отлично, когда я установил его в init viewController. Р>
попробуйте это -
self.navigationController? .navigationItem.hidesBackButton = true
В c # или Xamarin.ios, this.NavigationItem.HidesBackButton = true;