如何在iPhone的导航栏上隐藏“返回”按钮?


315

我添加了一个导航控件,以在应用程序中的视图之间切换。但是某些视图不应具有“返回”(上一个标题)按钮。关于如何隐藏后退按钮的任何想法?

Answers:


811

目标C:
self.navigationItem.hidesBackButton = YES;

迅速:
navigationItem.hidesBackButton = true


@ user8170如何隐藏导航栏上的左侧barbuttonitem。
rockey 2010年

9
您无法通过隐藏后退按钮self.navigationItem.leftBarButtonItem = nil;。如果您明确设置了leftbarbuttonitem,则可以使用self.navigationItem.leftBarButtonItem = nil;self.navigationItem.hidesBackButton = YES;将隐藏“后退”按钮项
rakeshNS 2012年

1
在iOS 7中,self.navigationItem.leftBarButtonItem = nil; 从viewDidLoad,viewWillAppear或viewDidAppear发布时,不会影响后退按钮。这行代码在viewdidLoad中有效:self.navigationItem.hidesBackButton = YES;
Alex Zavatone

2
不确定这是否有帮助,但“ self”始终是视图控制器,该视图控制器显示在导航控制器堆栈的顶部。
Kunal Balani

self.navigationItem.hidesBackButton = YES; 在viewDidLoad,ios 7中为我工作
leukosaima

38

最好的方法是将它们组合在一起,因此即使您手动设置它也将隐藏后退按钮:

self.navigationItem.leftBarButtonItem=nil;
self.navigationItem.hidesBackButton=YES;

6
为了回答user716216,他在其一句话解释中对此进行了解释。第二行代码适用于默认情况。如果您自己创建并添加了按钮,则第一行代码将起作用。
Alex Zavatone 2014年

21

隐藏带有波纹管代码的后退按钮...

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

要么

[self.navigationItem setHidesBackButton:YES];

另外,如果您有自定义,请UINavigationBar尝试以下代码

self.navigationItem.leftBarButtonItem = nil;

在任何课程中,当您使用该代码时,该课程的导航栏上的后退按钮都将隐藏...
Paras Joshi 2014年

6

Swift中

将此添加到控制器

override func viewDidLoad() {
    super.viewDidLoad()
    self.navigationItem.setHidesBackButton(true, animated: false)
}


3

在UIViewController的viewDidLoad函数中,使用以下代码:

self.navigationItem.hidesBackButton = YES;

2

不要忘记,您需要在具有nav控制器的对象上调用它。例如,如果您的nav控制器使用RootViewController推入选项卡栏控制器,则在RootViewController上调用self.navigationItem.hidesBackButton = YES将无济于事。您实际上必须打电话self.tabBarController.navigationItem.hidesBackButton = YES


2

别忘了我们现在有滑动手势。您可能还希望删除它。如有必要,请不要忘记再次启用它。

if ([self.navigationItem respondsToSelector:@selector(hidesBackButton)]) {
    self.navigationItem.hidesBackButton = YES;
}

if ([self.navigationController respondsToSelector:@selector(interactivePopGestureRecognizer)]) {
    self.navigationController.interactivePopGestureRecognizer.enabled = NO;
}

1

在您的视图控制器中添加此代码

UIView *myView = [[UIView alloc] initWithFrame: CGRectMake(0, 0, 300, 30)];
UIBarButtonItem *btnL = [[UIBarButtonItem alloc]initWithCustomView:myView];
self.navigationItem.leftBarButtonItem = btnL;

1

对我来说,以上所有方法似乎都不起作用,它没有视觉效果。我使用情节提要板时,其视图已“嵌入”在导航控制器中。

然后,我在代码级别添加我的menuItems,由于某种原因,在视觉上调试视图层次时,“ backButton”是可见的,并且menuItem图标显示在不可见的“后退按钮”下方。

我尝试了各种钩子方法所建议的设置,但没有效果。然后,我尝试了一种更野蛮的方法,并遍历了子视图,该视图也没有效果。

我检查了我的图标大小,看起来还可以。参考苹果的《人机界面指南》后,我确认我的图标正确。(在我的情况下,缩小1像素24像素48像素72像素)。

那么最奇怪的部分是实际的修复方法...

添加BarButton项时,为其提供至少一个字符的标题,在我的情况下为空格字符。

希望这对某人有帮助。

//left menu - the title must have a space
UIBarButtonItem *leftButtonItem = [[UIBarButtonItem alloc] initWithTitle:@" " <--THE FIX 
                                                                    style:UIBarButtonItemStylePlain
                                                                  target:self
                                                                  action:@selector(showMenu)];
leftButtonItem.image = [UIImage imageNamed:@"ic_menu"];

[self.navigationItem setLeftBarButtonItem:leftButtonItem];

1

当我坐下来时,它并不是在所有情况下都对我有用

self.navigationItem.hidesBackButton = YES;

在viewWillAppear或ViewDidLoad中,但是当我在viewController的init中设置它时,效果很好。




0
navigationItem.leftBarButtonItem = nil
navigationItem.hidesBackButton = true

如果您在didLoad或loadView中使用此代码块,但效果不理想。İf仔细查看,您可以看到视图加载时隐藏了后退按钮。看起来很奇怪。

什么是完美的解决方案?

从componentView (Command + Shift + L)BarButtonItem组件添加到目标viewControllers导航栏中。

从右侧面板中选择BarButtonItem set Title =“”

在此处输入图片说明

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.