Ответ 1
Objective-C:
self.navigationItem.hidesBackButton = YES;
Swift:
navigationItem.hidesBackButton = true
Я добавил навигационное управление для переключения между представлениями в моем приложении. Но некоторые из представлений не должны иметь кнопку "Назад" (предыдущий заголовок). Любые идеи о том, как скрыть кнопку "Назад"?
Objective-C:
self.navigationItem.hidesBackButton = YES;
Swift:
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. Например, если у вас есть контроллер 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;
Для меня ни одно из вышеизложенных, похоже, не работало, оно не имело визуального эффекта. Я использую раскадровки с представлением, "встроенным" в контроллер навигации.
Затем я на уровне кода добавляю свои элементы меню, и по какой-то причине "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 = YES;
в viewWillAppear или ViewDidLoad, но работал отлично, когда я установил его в init viewController.
попробуйте это - self.navigationController?.navigationItem.hidesBackButton = true