(编辑:在底部添加更多信息)
首先,我查看了类似的帖子并尝试了他们的答案,但没有运气:(我有一个自定义导航栏(只是一个自定义的背景图片),我正在尝试添加自定义后退按钮。
// custom back button.
UIButton *backBtn = [UIButton buttonWithType:UIButtonTypeCustom];
UIImage *backImg = [UIImage imageNamed:@"btn_back.png"];
backBtn.titleLabel.text = @"";
[backBtn setBackgroundImage:backImg forState:UIControlStateNormal];
[backBtn addTarget:self action:@selector(backPressed) forControlEvents:UIControlEventTouchUpInside];
backBtn.frame = CGRectMake(0, 0, 54, 33);
self.navigationItem.leftBarButtonItem = [[UIBarButtonItem alloc] initWithCustomView:backBtn];
self.navigationItem.leftBarButtonItem.title = @"";
以上代码用于添加按钮,但不会显示在导航栏上。我仍然可以点击其意图出现的区域,它确实将我带回到上一个视图?!删除上面的代码会显示标准后退按钮。
有什么想法吗?提前谢谢!
(编辑)
嗨,大家好,
我尝试了你的所有建议,但仍然没有运气:(我可能应该早些时候提到我使用以下代码自定义导航栏图像。这可能会影响我自定义后退按钮图像的显示。
此代码根据我设置的参数显示自定义图像。再次感谢您的进一步帮助!
// custom navigation bar image
@implementation UINavigationController (CustomImage)
// set the background image for the nav bar.
- (void) setCustomNavBar:(NSInteger)screen {
UIImage *navBarImg;
switch (screen) {
case kCreateHuntScreenIdentifier:
navBarImg = [UIImage imageNamed:@"title_create-hunt.png"];
break;
case kCreateLocationsScreenIdentifier:
navBarImg = [UIImage imageNamed:@"title_create-location.png"];
break;
case kListNewLocationsScreenIdentifier:
navBarImg = [UIImage imageNamed:@"title_choose-location.png"];
break;
default:
break;
}
UIImageView *imgView = [[UIImageView alloc] initWithImage:navBarImg];
[[[self.navigationBar subviews] objectAtIndex:0] removeFromSuperview];
[self.navigationBar addSubview:imgView];
[imgView release];
}
@end
答案 0 :(得分:2)
再次感谢您的所有建议!我终于找到了解决方案:D
当我推动或弹出堆栈时,我很快就需要能够将导航栏的背景图像从视图更改为视图。
使用最流行的方法,例如覆盖UINavigationBar的drawRect只能部分工作,它可以在根视图上工作,但是无论我是否将其发送到其他屏幕,都会将图像推送到导航栏堆栈的前面等等。
我在这里找到了解决方案:http://sebastiancelis.com/2009/12/21/adding-background-image-uinavigationbar/
读一读,效果很好:)
答案 1 :(得分:1)
UIButton *btn=[UIButton buttonWithType:UIButtonTypeCustom];
[btn setBackgroundImage:[UIImage imageNamed:@"imgname.png"] forState:UIControlStateNormal];
[btn addTarget:self action:@selector(method_name:) forControlEvents:UIControlEventTouchUpInside];
btn.frame=CGRectMake(3, 2, 53, 30);
UIBarButtonItem *btnBack=[[UIBarButtonItem alloc] initWithCustomView:btn];
self.navigationItem.leftBarButtonItem=btnBack;
[btnBack release];
[btn release];
答案 2 :(得分:0)
尝试,
self.navigationItem.hidesBackButton = YES;
在为.leftBarButtonItem编写代码之前。希望它有帮助