Swift - 如何在导航栏中隐藏返回按钮?

137

现在我有两个视图控制器。我的问题是我不知道如何在转换到第二个视图控制器后隐藏返回按钮。我找到的大多数参考资料都是关于Objective-C的。我该如何用Swift编写代码?

Objective-C中隐藏返回按钮的代码

[self.navigationItem setHidesBackButton:YES animated:YES];
13个回答

463
根据 UINavigationItem文档
self.navigationItem.setHidesBackButton(true, animated: true)

39
这里的 "snarkiness is for free" 意思是“讽刺挖苦是免费的”。 - Greg
78
它可能会吓到你@Paulw11,但事实就是,在谷歌上输入“Swift隐藏返回按钮”,然后来到这里 - 就像我刚刚做的那样 - 比翻阅官方文档中的大量文本要快得多。 - Joseph Beuys' Mum
8
虽然返回按钮的名称在第一个视图控制器中定义,但有趣的是要隐藏它的代码必须在第二个视图控制器中实现(显示该按钮的控制器)。 - XLE_22

53

如果您正在使用 UITabBarController

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

对我来说也是一样,但我想了解为什么。有人知道被接受的答案和这种方法之间的区别吗?我唯一能想到的就是继承模型与导航栏静态版本之间的区别。 - Helmut Granda
1
如果您注意到Bruno正在使用Tab Bar Controller,那就是不同之处。在被接受的答案中,VC可能嵌入了导航控制器。 - cloudcal
@cloudcal 我没有使用tabBar,但两个答案都有效。它们都隐藏了返回按钮。我以为如果视图控制器在屏幕上,然后我想隐藏返回按钮,它们会有所不同。然而,它们再次表现相同。我无法找到它们之间的任何区别。我认为Bruno的答案是不正确的。对于纯导航控制器来说,这并没有什么区别。我还没有尝试过tabBarController。 - mfaani
super.viewWillAppear(animated) self.tabBarController?.navigationItem.hidesBackButton = true }``` - tae ha

26

迅速

// 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
在我的情况下,有几个 navigationController,只有这个方法有用:**self.navigationItem.leftBarButtonItems = []**。 - J A S K I E R

10

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

navigationItem.hidesBackButton = true

10

将其放入viewDidLoad方法中。

navigationItem.hidesBackButton = true 

6

在SwiftUI中

.navigationBarBackButtonHidden(true)

4

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

3
将以下代码放入viewWillAppear方法中。
navigationItem.hidesBackButton = true

3

这个方法在Swift 5中对我非常有效,只需将其添加到你的viewDidLoad()中即可。

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

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接