Swift - Як приховати кнопку назад в навігаційному елементі?


103

Зараз у мене є два контролери подання. Моя проблема полягає в тому, що я не знаю, як приховати кнопку назад після переходу на другий контролер перегляду. Більшість посилань, які я знайшов, знаходяться в Objective-C. Як зашифрувати його в Swift?

Сховати код кнопки "назад" в "Objective-C"

[self.navigationItem setHidesBackButton:YES animated:YES];

Відповіді:


366

Відповідно до документації для UINavigationItem:

self.navigationItem.setHidesBackButton(true, animated: true);

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 Якщо ви помітили, що Бруно використовує контролер панелі вкладок, у цьому різниця. У випадку прийнятих відповідей ВК, ймовірно, вбудований у навігаційний контролер.
хмарний

@cloudcal Я не використовую tabBar, але обидві відповіді спрацювали. Вони обоє сховали кнопку заднього ходу. Я думав , що вони поводяться інакше , якщо ViewController був на екрані , а потім я хотів , щоб приховати кнопку назад. Проте вони обидва діяли однаково. Я не змогла знайти різниці між ними. Я кажу, що відповідь Бруно неправильна. Скоріше для чистої навігаціїController це не має значення. Я не пробував tabBarController
Honey

20

Швидкий

// remove left buttons (in case you added some)
 self.navigationItem.leftBarButtonItems = []
// hide the default back buttons
 self.navigationItem.hidesBackButton = true

Зрозуміло, що навігаціяItem.hidesBackButton = true - правильна відповідь. Якщо є ліві кнопки, що може бути так, то це, безумовно, правильна відповідь, і слід вважати більш повною відповіддю.
truedat101

self.navigationItem.hidesBackButton = trueЙого робота, як очікувалося.
Shahabuddin Vansiwala




0

Ось версія відповіді в

Швидкий 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, як шарм, просто додайте його у свій поглядDidLoad ()

self.navigationItem.setHidesBackButton(true, animated: true)

-4

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

Перейдіть до атрибутів інспектора та зніміть прапорець біля пункту навігації, щоб приховати кнопку назад.

Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.