2012-01-27 62 views
0

从文档UIBarButtonItems customViews,我认为这对于backBarButtonItem:是忽略了leftBarButtonItem

当此属性是零,导航项目在其 标题使用值(第10页)属性创建一个合适的后退按钮。如果您要 想要为后退按钮指定自定义图像或标题,则可以使用 指定 此属性的自定义栏按钮项目(使用您的自定义标题或图像)。配置您的酒吧按​​钮项目时,不要 为其分配自定义视图;导航项目无论如何都会忽略后栏按钮中的自定义视图 。

我不知道这是否与leftBarButtonItem相同?基本上我有这个代码:

UIButton *homeButton = [[UIButton alloc] initWithFrame:CGRectMake(0, 0, 44, 44)]; 
UIImage *homeImage = [UIImage imageNamed:@"icon_house.png"]; 
[homeButton setImage:homeImage forState:UIControlStateNormal]; 
[homeButton addTarget:self action:@selector(homePressed:) forControlEvents:UIControlEventTouchUpInside]; 
UIBarButtonItem *homeBBI = [[UIBarButtonItem alloc] initWithCustomView:homeButton]; 

在iOS 5之前,我把它放在一个UIToolBar中,它表现良好。现在我想把它作为leftBarButtonItem,放在UINavigationController的backButton的右边。当我设置它时,它根本不显示。没有图像。但是,当我创建这样的按钮:

UIBarButtonItem *hButton = [[UIBarButtonItem alloc] initWithTitle:@"home" style:UIBarButtonItemStylePlain target:self action:@selector(homePressed:)]; 

并将其设置为leftBarButtonItem,它显示了。我不知道如何让我的自定义图标为我的主页按钮没有边界。当我使用:

UIBarButtonItem *hButton2 = [[UIBarButtonItem alloc] initWithImage:[UIImage imageNamed:@"icon_house.png"] style:UIBarButtonItemStylePlain target:self action:@selector(homePressed:)]; 

我得到一个我的房子周围我不想要的边框。谢谢。

回答

2

试试这个

UIButton *TastoVersamento = [UIButton buttonWithType:UIButtonTypeCustom]; 
     [TastoVersamento setImage:[UIImage imageNamed:@"Versamento.png"] forState:UIControlStateNormal]; 
     [TastoVersamento addTarget:self action:@selector(Click_Versamento:) forControlEvents:UIControlEventTouchUpInside]; 
     [TastoVersamento setFrame:CGRectMake(0, 0, 40, 40)]; 
     [[self navigationItem] setLeftBarButtonItem:[[[UIBarButtonItem alloc] initWithCustomView:TastoVersamento] autorelease]]; 
0

backBarButtonItemleftBarButtonItem是不同的。 backBarButtonItem是默认的,如果没有给出leftBarButtonItem。即使leftItemsSupplementBackButtonYES,即使设置了leftBarButtonItem也会显示。

在第一个示例中,您可以尝试[homeButton sizeToFit]。我认为框架可能没有正确设置。

但是至于你最后的评论,我认为你将不会成功从导航项目按钮中删除边框。我很确定他们是硬编码的。事实上,如果你添加一个有边框的按钮,你会得到两个,一个来自按钮,一个来自导航项目。

+0

界面污物。你提前设定框架......无论如何,我认为你的第二个例子是你想要的:'initWithImage'。 (按钮内的按钮很奇怪。)'initWithImage'就是我所做的。正如我所说,我不相信你能够删除边界。 – smparkes 2012-01-27 17:02:12