如何隐藏'背部'iPhone导航栏上的按钮?

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

188742 次浏览
objective - c < p >: < br > self.navigationItem.hidesBackButton = YES; < / p > < p >迅速:< br > navigationItem.hidesBackButton = true < / p >

使用代码:

 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)
}

不要忘记你需要在具有nav控制器的对象上调用它。例如,如果你有一个nav控制器推一个带有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;
}

对我来说,上面这些方法都不管用,没有任何视觉效果。我使用的是带有“嵌入”在导航控制器中的视图的故事板。

然后,我在代码级别添加了我的menuItems,出于某种原因,在视觉调试视图层次结构时,“backButton”是可见的,我的menuItem图标显示在不可见的“back button”下面。

我尝试了各种钩子方法中建议的设置,但没有效果。然后我尝试了一种更残酷的方法,迭代子视图,这也没有效果。

我检查了我的图标大小,似乎是好的。 在参考了苹果人机界面指南后,我确认我的图标是正确的。(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;

在viewWillAppear或ViewDidLoad中,但当我在viewController的init中设置它时,工作得很好。

试试这个- self.navigationController?.navigationItem.hidesBackButton = true < / p >

在c#或Xamarin.ios中,

. this.NavigationItem.HidesBackButton = true
navigationItem.leftBarButtonItem = nil
navigationItem.hidesBackButton = true

如果你在didLoad或loadView中使用这个代码块,但工作不完美。İf你仔细看,你可以看到后退按钮隐藏时,你的视图加载。看起来很奇怪。

完美的解决方案是什么?

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

从右侧面板选择BarButtonItem set Title = " "

enter image description here

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