Swift - Как скрыть кнопку возврата в элементе навигации?

103

Прямо сейчас у меня есть два контроллера представления. Моя проблема в том, что я не знаю, как скрыть кнопку «Назад» после перехода на второй контроллер представления. Большинство ссылок, которые я нашел, относятся к Objective-C. Как мне написать код на Swift?

Скрыть код кнопки возврата в Objective-C

[self.navigationItem setHidesBackButton:YES animated:YES];
Мохаммад Нурдин
источник

Ответы:

367

Согласно документации на UINavigationItem:

self.navigationItem.setHidesBackButton(true, animated: true)
Paulw11
источник
30
язвительность - бесплатно.
Грег
58
Это может напугать вас @ Paulw11, но простой факт печатает «кнопку шкуры назад Swift» в Google и приходить сюда - как я только что сделал - это тонны быстрее , чем вспашки через пачку текста в официальной документации.
Мама Джозефа Бойса
4
В то время как имя кнопки «Назад» определяется в первом контроллере представления, может быть интересно заметить, что код, чтобы скрыть его, должен быть реализован во втором контроллере представления (тот, который показывает кнопку).
XLE_22
38

Если вы используете UITabBarController:

override func viewWillAppear(animated: Bool) {
    super.viewWillAppear(animated)
    self.tabBarController?.navigationItem.hidesBackButton = true
}
Бруно Кунья
источник
То же самое для меня, однако я хотел бы понять, почему. Кто-нибудь знает, в чем разница между принятым ответом и этим подходом? Единственное, о чем я могу думать, - это модель наследования и статическая версия панели навигации.
Гельмут Гранда,
1
@HelmutGranda Если вы заметили, что Бруно использует контроллер панели вкладок, разница в этом. В случае с принятыми ответами VC, вероятно, встроен в контроллер навигации.
cloudcal
@cloudcal Я не использую tabBar, но оба ответа работали. Оба они спрятали кнопку возврата. Я думал, что они будут вести себя по-другому, если viewController будет на экране, а затем я хотел скрыть кнопку «Назад». И снова они оба действовали одинаково. Я не смог найти между ними никакой разницы. Я говорю, что ответ Бруно неверен. Скорее для чистого navigationController это не имеет значения. Я не пробовал tabBarController
Дорогая
20

Swift

// remove left buttons (in case you added some)
 self.navigationItem.leftBarButtonItems = []
// hide the default back buttons
 self.navigationItem.hidesBackButton = true
Марвен Дук
источник
Понятно, что navigationItem.hidesBackButton = true - правильный ответ. Если есть левые кнопки, что может иметь место, то это, безусловно, правильный ответ, и его следует рассматривать как более полный ответ.
truedat101
self.navigationItem.hidesBackButton = trueОн работает, как ожидалось.
Shahabuddin Vansiwala
9

Это также можно найти в документации класса UINavigationController:

navigationItem.hidesBackButton = true
Амиру Хомуши
источник
6

Поместите это в viewDidLoadметод

navigationItem.hidesBackButton = true 
Харджит Сингх
источник
0

Вы можете попробовать с помощью приведенного ниже кода

override func viewDidAppear(_ animated: Bool) {
    self.navigationController?.isNavigationBarHidden = true
}
Дилип Джангид
источник
Это не ответ на этот вопрос.
Борис Николич
0

Вот вариант ответа в

Swift 5

что вы можете использовать его из раскадровки:

// MARK: - Hiding Back Button

extension UINavigationItem {

    /// A Boolean value that determines whether the back button is hidden.
    ///
    /// When set to `true`, the back button is hidden when this navigation item
    /// is the top item. This is true regardless of the value in the
    /// `leftItemsSupplementBackButton` property. When set to `false`, the back button
    /// is shown if it is still present. (It can be replaced by values in either
    /// the `leftBarButtonItem` or `leftBarButtonItems` properties.) The default value is `false`.
    @IBInspectable var hideBackButton: Bool {
        get { hidesBackButton }
        set { hidesBackButton = newValue }
    }
}

Каждый элемент навигации контроллера представления будет иметь это новое свойство в верхней части инспектора атрибутов.

Стоян
источник
0

Это сработало для меня в Swift 5 как шарм, просто добавьте его в свой viewDidLoad ()

self.navigationItem.setHidesBackButton(true, animated: true)
Матан
источник
-4

введите описание изображения здесь

Перейдите в инспектор атрибутов и снимите флажок «Показать панель навигации, чтобы скрыть кнопку возврата».

Нирадж Сачдева
источник