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

问题描述:

我添加了一个导航控件来切换我的应用程序中的视图。但有些视图不应该有'Back'(前一个标题)按钮。有关如何隐藏后退按钮的任何想法?如何隐藏iPhone上导航栏上的“返回”按钮?

的Objective-C:
self.navigationItem.hidesBackButton = YES;

斯威夫特:
navigationItem.hidesBackButton = true

+0

@ user8170如何隐藏导航栏上的左侧barbuttonitem ..? – rockey 2010-11-11 21:46:07

+7

@vakio,实际上并没有工作;) – 2012-03-15 14:29:39

+9

你不能隐藏按钮`self.navigationItem.leftBarButtonItem = nil;`。如果你明确地设置了leftbarbuttonitem,你可以使用`self.navigationItem.leftBarButtonItem = nil;`。 `self.navigationItem.hidesBackButton = YES;`会隐藏后退按钮项目 – rakeshNS 2012-08-09 11:28:33

使用代码:

self.navigationItem.backBarButtonItem=nil; 

,最好的办法是结合这些,所以它会隐藏后退按钮即使您手动设置:

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

隐藏与娄代码后退按钮...

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

[self.navigationItem setHidesBackButton:YES]; 

此外,如果你有自定义UINavigationBar然后尝试娄代码

self.navigationItem.leftBarButtonItem = nil; 

在功能UIViewController的viewDidLoad使用代码:

self.navigationItem.hidesBackButton = YES; 

斯威夫特

一下添加到控制器

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

不要忘记,你需要调用它具有导航控制器的对象。例如,如果您使用RootViewController将导航控制器推送到标签栏控制器上,则在RootViewController上调用self.navigationItem.hidesBackButton = YES将不会执行任何操作。实际上,你将不得不调用self.tabBarController.navigationItem.hidesBackButton = YES

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

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

不要忘记,我们有幻灯片现在回退姿势。你可能也想删除这个。 如有必要,不要忘记将其重新启用。

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

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

对于我来说,上述都不起作用,它没有视觉效果。我正在使用嵌入在导航控制器中的视图的故事板。

我然后在代码级别添加我的菜单项,并出于某种原因,“后退按钮”时可见视觉调试视图层次,我的菜单项图标显示在看不见的“返回”按钮的下方。

我尝试了各种钩子方法建议的设置,并且没有任何效果。然后,我尝试了一种更加残酷的方法,并重复使用也没有效果的子视图。

我检查了我的图标大小,看起来没问题。 经过提及他苹果Human Interface Guideline,我确认了我的图标是正确的。 (在我的情况下24px 48px 72px小1像素)。

然后奇怪的部分是实际修复...

当添加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]; 

这不是在所有情况下工作对我来说,当我设置

self.navigationItem.hidesBackButton = YES;

in viewWillAppear或ViewDidLoad,但是当我在viewController的init中设置它的时候工作得很完美。