提问



我添加了一个导航控件,可以在我的应用中切换视图。但有些观点不应该有返回(前一个标题)按钮。有关如何隐藏后退按钮的任何想法?

最佳参考


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


斯威夫特:点击
    navigationItem.hidesBackButton = true

其它参考1


最好的方法是组合这些,所以即使你手动设置它也会隐藏后退按钮:


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

其它参考2


用波纹管代码隐藏后退按钮...


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





[self.navigationItem setHidesBackButton:YES];


如果你有自定义UINavigationBar,那么尝试下面的代码


self.navigationItem.leftBarButtonItem = nil;

其它参考3


使用代码:


 self.navigationItem.backBarButtonItem=nil;

其它参考4


Swift 中:


将其添加到控制器


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

其它参考5


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


self.navigationItem.hidesBackButton = YES;

其它参考6


不要忘记你需要在具有导航控制器的对象上调用它。例如,如果你有导航控制器用RootViewController推动标签栏控制器,在RootViewController上调用self.navigationItem.hidesBackButton = YES将什么都不做。你实际上必须打电话self.tabBarController.navigationItem.hidesBackButton = YES

其它参考7


不要忘记我们现在有幻灯片回来的姿势。你可能也希望删除它。如果有必要,别忘了重新启用它。


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

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

其它参考8


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


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

其它参考9


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


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


我按照各种钩子方法的建议尝试了设置,但没有效果。然后我尝试了一个更残酷的方法并迭代子视图,这也没有任何影响。


我检查了我的图标尺寸,看起来还不错。
在提到苹果人机界面指南后,我确认我的图标是正确的。 (在我的情况下,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];

其它参考10


在我设定的所有情况下,它都不适合我


self.navigationItem.hidesBackButton=YES;


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