繁体   English   中英

如何使以编程方式创建的leftBarButtonItem可见并设置backgroundimage

[英]How to make visible a leftBarButtonItem created programmatically and set backgroundimage

下面的代码在我的应用程序中工作正常。 但是那个leftbarbuttonitem是不可见的。 而且我不能将背景图像设置为leftBarButtonItem 我做错了什么,但我不知道这是什么错误? 是否可以显示和设置背景图像?

UIImageView *NavigationBarImage =[[UIImageView alloc]initWithFrame:CGRectMake(0, 0, 320, 44)];
NavigationBarImage.image=[UIImage imageNamed:@"mapbutton.png"];
[self.navigationController.navigationBar addSubview:NavigationBarImage];
self.navigationItem.hidesBackButton = YES;

UIBarButtonItem *backButton = [[UIBarButtonItem alloc] initWithBarButtonSystemItem:UIBarButtonItemStyleBordered target:self action:@selector(goBack)];
self.navigationItem.leftBarButtonItem = backButton;

-(void)goBack
{
    [self.navigationController popViewControllerAnimated:YES];
}

如果要将backgroundImage添加到导航项,则必须添加一个自定义按钮,例如以下:

UIButton *tempButton                            =       [UIButton buttonWithType:UIButtonTypeCustom];
tempButton.frame                                =       CGRectMake(0, 0, 50, 30);
tempButton.showsTouchWhenHighlighted            =       YES;
tempButton.backgroundColor                      =       [UIColor clearColor];
[tempButton setBackgroundImage:[UIImage imageNamed:@"back.png"] forState:UIControlStateNormal];
[tempButton setTitle:@"Back" forState:UIControlStateNormal];
[tempButton addTarget:self action:@selector(goBack) forControlEvents:UIControlEventTouchUpInside];

UIBarButtonItem *backBtn                        =         [[UIBarButtonItem alloc]initWithCustomView:tempButton];

self.navigationItem.leftBarButtonItem           =       backBtn;

并将背景图片添加到导航栏,您可以使用以下代码

 [self.navigationController.navigationBar setBackgroundImage:[UIImage imageNamed:@"header.png"] forBarMetrics:UIBarMetricsDefault];
UIButton *home = [UIButton buttonWithType:UIButtonTypeCustom];  
UIImage *homeImage = [UIImage imageNamed:@"YOUR_IMAGE.png"];  
[home setBackgroundImage:homeImage forState:UIControlStateNormal];  
[home addTarget:self action:@selector(your_Action)  
forControlEvents:UIControlEventTouchUpInside];  
home.frame = CGRectMake(0, 0, 69, 26);  
UIBarButtonItem *button2 = [[UIBarButtonItem alloc] initWithCustomView:home];
[[self navigationItem] setLeftBarButtonItem:button2];
[button2 release];
button2 = nil;

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM