iOS如何移除返回按钮?

51

我有一个带有导航栏的应用程序,它会推送到一个登录界面视图控制器,然后再推送到主菜单。有没有办法从主菜单中移除返回按钮,使用户无法返回到登录屏幕?

谢谢!

编辑:使用Xcode 4.3,并通过编程完成所有工作。

7个回答

121

你可以这样做:

[self.navigationItem setHidesBackButton:YES];

在你的第二个视图控制器中(你想隐藏按钮的那个)。


3
考虑重新考虑使用导航栈,改为使用模态视图控制器 - 请参见下文。 - LJ Wilson
1
将来参考,如果它对您不起作用,只需将该代码放在viewDidAppear:中,它就会开始工作。 - MSU_Bulldog
2
self.navigationItem.hidesBackButton = true 适用于 Swift 4+。 - Gerardo Salazar Sánchez

9

Peter的回答是正确的,尽管我认为更好的问题是为什么?在像您这样的架构中,您想要登录用户,而不是使用Pushed VC,请呈现一个Modal VC并使用委托方法获取通过登录过程获得的用户信息。如果需要,我可以发布完整的代码示例,但听起来您已经在登录过程中解决了细节问题。只需使用:

presentModalViewController

替代方法:

pushViewController

那样一来,您就不必担心导航堆栈和执行与用户界面指南不太一致的操作了。

8
在Swift中
self.navigationItem.hidesBackButton = true

1
它可以工作,但是滑动返回手势会丢失! - Tai Le

6

1

在Xcode7.3.1中尝试,使用Swift

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

它仅隐藏了返回箭头并禁用了返回操作,但我仍然可以看到上一个视图控制器的名称。
对于那些想要隐藏上一个视图控制器名称的人,请尝试Yoga's answer。在Swift中适用。
self.navigationItem.leftBarButtonItem = UIBarButtonItem(customView: UIView())

1

试试这个:

[self.navigationItem setHidesBackButton:YES];

或者

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

1

如果需要切换显示/隐藏返回按钮:

navigationItem.hidesBackButton = true/false

And keep the swipe back gesture:

extension YourViewController: UIGestureRecognizerDelegate {}

navigationController?.interactivePopGestureRecognizer?.isEnabled = true
navigationController?.interactivePopGestureRecognizer?.delegate = self

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