如何隐藏iPhone导航栏上的“后退”按钮?
-
03-07-2019 - |
题
我添加了一个导航控件,可以在我的应用中切换视图。但有些观点不应该有“后退”(前一个标题)按钮。有关如何隐藏后退按钮的任何想法?
解决方案
目标-C:结果
self.navigationItem.hidesBackButton = YES;
夫特:结果
navigationItem.hidesBackButton = true
其他提示
最好的方法是组合这些,所以即使你手动设置它也会隐藏后退按钮:
self.navigationItem.leftBarButtonItem=nil;
self.navigationItem.hidesBackButton=YES;
使用波纹管代码隐藏后退按钮...
[self.navigationItem setHidesBackButton:YES animated:YES];
或
[self.navigationItem setHidesBackButton:YES];
此外,如果您有自定义 UINavigationBar
,请尝试以下代码
self.navigationItem.leftBarButtonItem = nil;
使用代码:
self.navigationItem.backBarButtonItem=nil;
在 Swift :
将此添加到控制器
override func viewDidLoad() {
super.viewDidLoad()
self.navigationItem.setHidesBackButton(true, animated: false)
}
在UIViewController的函数viewDidLoad中使用代码:
self.navigationItem.hidesBackButton = YES;
不要忘记您需要在具有导航控制器的对象上调用它。例如,如果你有一个导航控制器用RootViewController推动一个标签栏控制器,在RootViewController上调用 self.navigationItem.hidesBackButton = YES
将什么都不做。你实际上必须调用 self.tabBarController.navigationItem.hidesBackButton = YES
不要忘记我们现在有幻灯片回到手势。您可能也想删除它。 如有必要,请不要忘记重新启用它。
if ([self.navigationItem respondsToSelector:@selector(hidesBackButton)]) {
self.navigationItem.hidesBackButton = YES;
}
if ([self.navigationController respondsToSelector:@selector(interactivePopGestureRecognizer)]) {
self.navigationController.interactivePopGestureRecognizer.enabled = NO;
}
在视图控制器中添加此代码
UIView *myView = [[UIView alloc] initWithFrame: CGRectMake(0, 0, 300, 30)];
UIBarButtonItem *btnL = [[UIBarButtonItem alloc]initWithCustomView:myView];
self.navigationItem.leftBarButtonItem = btnL;
对我来说,上述似乎都没有效果,它没有视觉效果。我正在使用具有“嵌入”视图的故事板。在导航控制器中。
然后我在代码级别添加了我的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];
当我设置
时,它在所有情况下都不适合我self.navigationItem.hidesBackButton = YES;
在viewWillAppear或ViewDidLoad中,但在我在viewController的init中设置它时效果很好。
尝试这一个 -
self.navigationController?.navigationItem.hidesBackButton = true
在c#或Xamarin.ios中, this.NavigationItem.HidesBackButton = true;