Swift-如何在导航项中隐藏后退按钮?


103

现在我有两个视图控制器。我的问题是,在转换到第二个视图控制器后,我不知道如何隐藏后退按钮。我发现的大多数参考都在Objective-C中。如何在Swift中编写代码?

在Objective-C中隐藏后退按钮代码

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

Answers:


366

根据该文件UINavigationItem

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

30
贪食是免费的。
格雷格

58
它可能会吓着你了@ Paulw11,但显而易见的事实是打字“雨燕隐藏后退按钮”进入谷歌和来到这里-像我刚才那样-是不是通过文字的官方文档中的里姆斯耕作更快。
约瑟夫·博伊斯的妈妈

4
尽管后退按钮的名称是在第一个视图控制器中定义的,但有趣的是,隐藏它的代码必须在第二个视图控制器中实现(显示按钮的那个)。
XLE_22年

38

如果您使用的是UITabBarController

override func viewWillAppear(animated: Bool) {
    super.viewWillAppear(animated)
    self.tabBarController?.navigationItem.hidesBackButton = true
}

对我来说也是一样,但是我想理解为什么。有谁知道接受的答案和这种方法有什么区别?我唯一能想到的是继承模型与导航栏的静态版本。
Helmut Granda'3

1
@HelmutGranda如果您注意到Bruno使用的是Tab Bar Controller,那就是区别。在接受答案的情况下,VC可能嵌入在导航控制器中。
cloudcal

@cloudcal我没有使用tabBar,但是两个答案都起作用。他们两个都隐藏了“后退”按钮。我认为如果viewController 在屏幕上,它们的行为会有所不同,然后我想隐藏后退按钮。再一次,他们俩的行为相同。我找不到它们之间的任何区别。我是说布鲁诺的答案不正确。对于纯navigationController而言,这没有什么区别。我还没有尝试过tabBarController
亲爱的

20

迅速

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

显然,navigationItem.hidesBackButton = true是正确的答案。如果存在左按钮(可能是这种情况),那么这绝对是正确的答案,应该被认为是更完整的答案。
truedat101 '18

self.navigationItem.hidesBackButton = true其工作按预期进行。
Shahabuddin Vansiwala

9

这也可以在UINavigationController类文档中找到:

navigationItem.hidesBackButton = true



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中对我来说就像一个魅力一样,只需将其添加到您的viewDidLoad()

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

By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.