2010-12-23 84 views
1

(编辑:增加了更多的在底部的信息)自定义按钮UINavigationBar的不显示

首先,我有过类似的帖子看,并试图自己的答案,但没有运气:(我有一个自定义导航条(只自定义背景图片),我尝试添加自定义后退按钮。

// 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

确定,如果我不显示导航栏自定义后退按钮做的自定义图像显示!将尝试看看我是否能同时展示,如果我弄清楚发生了什么,我会在这里发布更新! – bennythemink 2010-12-23 12:16:21

回答

2

感谢您的咨询!我终于找到了一个解决方案:D

很快我需要能够将导航栏的背景图像从视图更改为查看当我推送或弹出堆栈时查看。

使用最流行的方法,比如重写UINavigationBar的drawRect只能部分工作,它可以在根视图上工作,然后将图像推送到导航栏的堆栈前面,而不管是否发送它到后面,等

我发现这里的解决方案:http://sebastiancelis.com/2009/12/21/adding-background-image-uinavigationbar/

取读,它的伟大工程:)

0

尝试,

self.navigationItem.hidesBackButton = YES;

befor写.leftBarButtonItem。希望它的代码又有助于

+0

谢谢Swastik,但没有运气,要么:( – bennythemink 2010-12-23 06:14:22

+0

是你的图像名称是否正确?请检查 – Swastik 2010-12-23 06:22:06

+0

嘿Swastik,是我的图像名称是正确的 – bennythemink 2010-12-23 12:10:50

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]; 
相关问题