iOS - 只显示后退按钮而不显示导航栏的正确方法是啥?

Posted

技术标签:

【中文标题】iOS - 只显示后退按钮而不显示导航栏的正确方法是啥?【英文标题】:iOS - What is the proper way to just display back button and no navigationBar?iOS - 只显示后退按钮而不显示导航栏的正确方法是什么? 【发布时间】:2015-09-03 04:29:17 【问题描述】:

上述设计可以使用 setNavigationBarHidden = YES 并通过在顶部添加 UIButton 来实现 backButton 行为。但我想避免这种黑客/方法。

我是否仍然可以在没有 navigationBar 的情况下将 leftBarButtonItems 用于 backButton ?

这种设计的推荐和正确方法是什么?

【问题讨论】:

【参考方案1】:

leftBarButtonItems 是 UINavigation item 的属性,所以你不能在没有导航栏的情况下使用它。因此,如果您不想使用导航栏添加自定义按钮,可能是一种方法。

【讨论】:

【参考方案2】:

leftBarButtonItems 是一个只能和导航栏一起使用的配件,如果你想用它就只能和导航栏一起使用。

现在,如果您不想添加自定义按钮,只需使用以下代码使 UINavigationBar 透明即可。

[self.navigationBar setBackgroundImage:[UIImage new]
                         forBarMetrics:UIBarMetricsDefault];
self.navigationBar.shadowImage = [UIImage new];
self.navigationBar.translucent = YES;

【讨论】:

【参考方案3】:

你甚至可以在不隐藏导航栏的情况下做到这一点

 UIButton *backBtn = [[UIButton alloc] initWithFrame:CGRectMake(10, 5, 60, 20)];
[backBtn setImage:[UIImage imageNamed:@"navigationBar_back_image"] forState:UIControlStateNormal]; // use your image or setText of backBtn "<"
[backBtn addTarget:self action:@selector(pushBackBtnTpd:) forControlEvents:UIControlEventTouchUpInside];

UIBarButtonItem *backBarButtonItem = [[UIBarButtonItem alloc] initWithCustomView:backBtn] ;
self.navigationItem.leftBarButtonItem = backBarButtonItem;

    -(IBAction)pushBackBtnTpd:(id)sender

    [self.navigationController popViewControllerAnimated:YES];

【讨论】:

以上是关于iOS - 只显示后退按钮而不显示导航栏的正确方法是啥?的主要内容,如果未能解决你的问题,请参考以下文章

ios怎么改变全局的导航条返回按钮

如何设置导航栏的后退项

iOS:默认后退按钮显示在自定义左侧导航按钮上

如何完全覆盖导航栏的后退按钮操作?

导航栏上的后退按钮仅显示没有单词的指示器

导航栏项目中未显示标题和后退按钮(iOS 7)