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

Ios 如何在iPhone上隐藏导航栏上的“后退”按钮?,ios,objective-c,iphone,navigation,uinavigationcontroller,Ios,Objective C,Iphone,Navigation,Uinavigationcontroller,我在我的应用程序中添加了一个导航控件来在视图之间切换。但是有些视图不应该有“返回”上一个标题按钮。有没有关于如何隐藏后退按钮的想法?Objective-C: self.navigationItem.hidesBackButton=YES 斯威夫特: navigationItem.hidesBackButton=true使用以下代码: self.navigationItem.backBarButtonItem=nil; self.navigationItem.hidesBackButton =

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

Objective-C:
self.navigationItem.hidesBackButton=YES

斯威夫特: navigationItem.hidesBackButton=true

使用以下代码:

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

最好的方法是将这些按钮组合在一起,这样即使您手动设置,也会隐藏“后退”按钮:

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

隐藏返回按钮与吼叫代码

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

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

self.navigationItem.leftBarButtonItem = nil;

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

 self.navigationItem.backBarButtonItem=nil;
self.navigationItem.hidesBackButton = YES;
迅速:

将此添加到控制器


不要忘记,您需要在具有导航控制器的对象上调用它。例如,如果导航控制器使用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;

别忘了我们现在有了向后滑动的手势。您可能也希望删除此项。如果需要,不要忘记再次启用它


对我来说,以上这些似乎都不起作用,它没有视觉效果。我正在使用一个嵌入导航控制器的视图的故事板

然后,我在代码级别添加我的菜单项,由于某种原因,在可视化调试视图层次结构时,backButton是可见的,而我的菜单项图标显示在不可见的后退按钮下方

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

我检查了我的图标大小,看起来还行。 在参考苹果人机界面指南后,我确认我的图标是正确的。在我的情况下,小1像素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];

当我开始工作的时候,它并不是在所有情况下都对我有效


self.navigationItem.hidesBackButton=YES

在viewwillbeen或ViewDidLoad中,但当我在viewController的init中设置它时,它工作得非常好

试试这个- self.navigationController?.navigationItem.hidesBackButton=true在c或Xamarin.ios中, this.NavigationItem.HidesBackButton=true

navigationItem.leftBarButtonItem = nil
navigationItem.hidesBackButton = true
如果您在didLoad或loadView中使用此代码块,虽然工作正常,但并不完美。如果您仔细查看,您可以在加载视图时看到“后退”按钮隐藏。看起来很奇怪

什么是完美的解决方案

将componentView命令+Shift+L中的BarButtonItem组件添加到目标ViewController导航栏

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


@用户8170如何在导航栏上隐藏左按钮项..?不能通过self.navigationItem.leftBarButtonItem=nil;隐藏backbutton;。如果已明确设置leftbarbuttonitem,则可以使用self.navigationItem.leftbarbuttonitem=nil;。self.navigationItem.hidesBackButton=YES;将在iOS 7中隐藏后退按钮项,self.navigationItem.leftBarButtonim=nil;从viewDidLoad、ViewWillDisplay或ViewDidDisplay发出时,不影响“后退”按钮。这行代码在viewdidLoad中不起作用:self.navigationItem.hidesBackButton=YES;不确定这是否有帮助,但“self”始终是一个视图控制器,显示在导航控制器堆栈的顶部。self.navigationItem.hidesBackButton=YES;在ios 7的viewDidLoad中为我工作为了回答用户716216,他用一句话解释了这一点。第二行代码适用于默认情况。如果您自己创建并添加了按钮,则第一行代码将起作用。在任何类中,当您使用该代码时,该类的导航栏上的“后退”按钮将隐藏…这将显示导航项的默认“后退”按钮项。如果没有此功能,许多没有“后退”按钮的控制器将被刷回启用:另外请注意,一旦用户离开当前场景,您将需要启用interactivePopGestureRezognizer。
navigationItem.leftBarButtonItem = nil
navigationItem.hidesBackButton = true