将图像和标题都添加到导航 backBarButtonItem

Posted

技术标签:

【中文标题】将图像和标题都添加到导航 backBarButtonItem【英文标题】:Adding both image and title to a navigation backBarButtonItem 【发布时间】:2013-04-05 14:24:28 【问题描述】:

我正在尝试向导航控制器的后退按钮添加一个图标(并保留标题)。似乎如果我设置 UIBarButtonItem 的图像它会隐藏标题,所以我想我会尝试自定义视图。我试过了

UIButton* customButton = [UIButton buttonWithType:UIButtonTypeRoundedRect];
[customButton setImage:[UIImage imageNamed:@"icon"] forState:UIControlStateNormal];
[customButton setTitle:@"Title" forState:UIControlStateNormal];
[customButton setAdjustsImageWhenHighlighted:YES];
[customButton setFrame:CGRectMake(0, 0, 125, 32)];

UIBarButtonItem* backButton = [[UIBarButtonItem alloc] initWithCustomView:customButton];
self.navigationItem.backBarButtonItem = backButton;

但是 Apple 文档说 backBarButtonItem 忽略了自定义视图,所以这不起作用。

我也试过这个:

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

但 leftBarButtonItem 过早显示一个屏幕,而 hidesBackButton 似乎没有隐藏 backBarButtonItem。

还有其他方法可以将图像和标题都放到导航 backBarButtonItem 上吗?

【问题讨论】:

【参考方案1】:

首先隐藏UINavigationController提供的后退按钮,使用代码self.navigationItem.hidesBackButton = YES;

并使用以下代码设置带有图像和标题的自己的按钮

UIButton* customButton = [UIButton buttonWithType:UIButtonTypeRoundedRect];
[customButton setImage:[UIImage imageNamed:@"icon"] forState:UIControlStateNormal];
[customButton setTitle:@"Title" forState:UIControlStateNormal];
[customButton setAdjustsImageWhenHighlighted:YES];
[customButton setFrame:CGRectMake(0, 0, 125, 32)];

UIBarButtonItem* backButton = [[UIBarButtonItem alloc] initWithCustomView:customButton];
self.navigationItem.backBarButtonItem = backButton;

【讨论】:

> ios7: "在配置你的 bar button item 时,不要给它分配自定义视图;导航项无论如何都会忽略后栏按钮中的自定义视图" 那么我如何将自己的图像添加为后退按钮? @SoftDesigner 我使用了这个解决方案***.com/a/20283490/649379@Vinodh。另外我会尝试隐藏后退按钮:***.com/a/21225089/649379

以上是关于将图像和标题都添加到导航 backBarButtonItem的主要内容,如果未能解决你的问题,请参考以下文章

以编程方式将系统图像添加到导航栏

无法将图像添加到标签栏项目反应导航

Bootstrap - 如何将徽标添加到导航栏类?

在导航栏中使用标题标签居中图像

如何在 ios7 上将导航栏背景图像添加到 MFMailComposeViewController

如何将 UIImageView 添加到导航栏的右侧?