【发布时间】:2012-02-29 12:46:27
【问题描述】:
我有一个带有导航栏的应用程序,它推送到登录屏幕视图控制器,然后推送到主菜单。有什么办法可以从主菜单中删除后退按钮,因此用户无法返回登录屏幕?
谢谢!
编辑:使用 Xcode 4.3 并以编程方式完成所有工作。
【问题讨论】:
我有一个带有导航栏的应用程序,它推送到登录屏幕视图控制器,然后推送到主菜单。有什么办法可以从主菜单中删除后退按钮,因此用户无法返回登录屏幕?
谢谢!
编辑:使用 Xcode 4.3 并以编程方式完成所有工作。
【问题讨论】:
你可以这样做:
[self.navigationItem setHidesBackButton:YES];
在您的第二个视图控制器(您想要隐藏按钮的那个)中。
【讨论】:
彼得斯的回答是正确的,虽然我认为更好的问题是为什么?在您想要登录用户的模式中,而不是使用推送 VC,呈现一个模态 VC 并使用委托方法来取回在登录过程中获得的用户信息。如果您需要,我可以发布一个完整的代码示例,但听起来您已经通过登录过程制定了详细信息。只需使用:
presentModalViewController
代替:
pushViewController
这样,您就不必担心导航堆栈,也不必做与用户界面指南不相符的事情。
【讨论】:
迅速
self.navigationItem.hidesBackButton = true
【讨论】:
上面的代码对我不起作用。正如UINavigationItem setHidesBackButton:YES won't prevent from going back 中所建议的, 我不得不使用:
[self.navigationItem setLeftBarButtonItem:[[UIBarButtonItem alloc] initWithCustomView:[[UIView alloc] init]]];
【讨论】:
试试这个:
[self.navigationItem setHidesBackButton:YES];
或者
[self.navigationItem setHidesBackButton:YES animated:YES];
【讨论】:
在 Xcode7.3.1 中试过,很快
self.navigationItem.setHidesBackButton(true, animated: true)
它只隐藏了后退箭头并禁用了后退操作,但我仍然可以看到前一个视图控制器的名称。
如果还想隐藏前一个视图控制器的名称,请尝试Yoga's answer 对我有用。很快
self.navigationItem.leftBarButtonItem = UIBarButtonItem(customView: UIView())
【讨论】:
如果您需要切换显示/隐藏后退按钮:
navigationItem.hidesBackButton = true/false
并保持向后滑动手势:
extension YourViewController: UIGestureRecognizerDelegate {}
和
navigationController?.interactivePopGestureRecognizer?.isEnabled = true
navigationController?.interactivePopGestureRecognizer?.delegate = self
【讨论】: