如何隐藏iPhone导航栏上的“后退”按钮?

内容来源于 Stack Overflow,并遵循CC BY-SA 3.0许可协议进行翻译与使用

  • 回答 (10)
  • 关注 (0)
  • 查看 (140)

我在 iOS App 中添加了一个用于切换视图的导航控件,但是有一些视图中不应该有返回按钮,如何在特定视图下隐藏导航按钮?

提问于
用户回答回答于

Object-c 代码如下

self.navigationItem.hidesBackButton = YES;

Swift 代码如下

navigationItem.hidesBackButton = true

用户回答回答于

对我来说,上面的任何一个似乎都没有效果,也没有视觉效果。我使用的是一个 view “嵌入”在导航控制器的故事板。

然后,我在代码中添加我的菜单,由于某种原因,在可视化调试视图层次结构时,“backButton”是可见的,我的menuItem图标显示在不可见的“Back按钮”下面。

我尝试了这些设置,就像在各种 Hook 方法中所建议的那样,但没有任何效果。然后,我尝试了一种更残忍的方法来遍历,这也没有任何效果。

我检查了一下我的图标大小,看上去还不错。在参考苹果人机界面指南后,我确认我的图标是正确的。(24px 48px 72px)。

最奇怪的是,这修复了。。。

当添加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];
用户回答回答于

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

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;
}
用户回答回答于

你需要在导航栏对应的控制器中调用这个方法。

比如,如果你是在 RootViewController 中控制 nav Controller, 你在 RootViewController 调用self.navigationItem.hidesBackButton = YES是没有用的。你要调用self.tabBarController.navigationItem.hidesBackButton = YES

用户回答回答于

在 UIViewController 的 viewDidLoad 函数中添加下面的代码就行额

self.navigationItem.hidesBackButton = YES;
用户回答回答于

如果你使用的 Swift ,可以在 Controller 中添加下面的代码来实现

override func viewDidLoad() {
    super.viewDidLoad()
    self.navigationItem.setHidesBackButton(true, animated: false)
}
用户回答回答于

使用代码:

 self.navigationItem.backBarButtonItem=nil;
用户回答回答于

使用下面的代码来隐藏返回按钮。

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

或者用

[self.navigationItem setHidesBackButton:YES];

如果你自定义了UINavigationBar的话,可以试试下面的代码

self.navigationItem.leftBarButtonItem = nil;
用户回答回答于

最好的方法是将他们组合起来控制,这样即使你手动设置他们,也会自动隐藏后退按钮。

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

扫码关注云+社区

领取腾讯云代金券