2012-06-30 53 views
7

我正在尝试为我的UIBarButtonItem设置图像,但我无法做到这一点。我尝试了两次,第一种情况是我的图像在正确的位置,但是当我点击按钮时没有任何反应(它应该弹出一个新窗口,但没有任何效果)。还有就是我已经使用了一段代码:无法为UIBarButtonItem设置图像

UIImage *faceImage = [UIImage imageNamed:@"plus_button.png"]; 
    UIButton *face = [UIButton buttonWithType:UIButtonTypeCustom]; 
    face.bounds = CGRectMake(0, 0, faceImage.size.width, faceImage.size.height); 
    [face setImage:faceImage forState:UIControlStateNormal]; 
    UIBarButtonItem *faceBtn = [[[UIBarButtonItem alloc] initWithCustomView:face]initWithImage:faceImage style:UIBarButtonItemStylePlain target:self action:@selector(addProduct:)]; 

    self.navigationItem.leftBarButtonItem = faceBtn; 

在第二种情况下,我设置的按钮图像,并出现新的窗口,它应该是,但不仅是我的自定义图像我想要的,而且它显示“边界”,它看起来像图像放在默认按钮的中心。显然,我只想要我的形象,而不是边界,只有我的形象。有我在第二种情况下使用的一段代码:

UIBarButtonItem *addButton = [[UIBarButtonItem alloc]initWithImage:faceImage style:UIBarStyleDefault target:self action:@selector(addProduct:)]; 

    self.navigationItem.leftBarButtonItem = addButton; 

请帮我解决问题,任何帮助将不胜感激,谢谢!

回答

8

试试这个...改变它的方法,图像根据您

UIButton *button1=[UIButton buttonWithType:UIButtonTypeCustom]; 
[button1 setFrame:CGRectMake(10.0, 2.0, 45.0, 40.0)]; 
[button1 addTarget:self action:@selector(showLeft:) forControlEvents:UIControlEventTouchUpInside]; 
[button1 setImage:[UIImage imageNamed:@"left-arrow-button.png"] forState:UIControlStateNormal]; 
UIBarButtonItem *button = [[UIBarButtonItem alloc]initWithCustomView:button1]; 
self.navigationItem.leftBarButtonItem = button; 
+0

barButtonItemClass是未申报的标识符:( –

+0

哦!我写错了...现在我编辑请检查它:-) – TheTiger

+0

它适合你吗? – TheTiger

3

我修改了你的代码并测试了在barbutton中显示的图像。请自己尝试一下。如果您遇到任何问题,请让我知道。

UIImage *faceImage = [UIImage imageNamed:@"Badge.png"]; 
    UIButton *face = [UIButton buttonWithType:UIButtonTypeCustom]; 
    face.bounds = CGRectMake(0, 0, faceImage.size.width, faceImage.size.height); 
    [face addTarget:self action:@selector(showAlerts) forControlEvents:UIControlEventTouchUpInside]; 
    [face setImage:faceImage forState:UIControlStateNormal]; 
    UIBarButtonItem *faceBtn = [[UIBarButtonItem alloc] initWithCustomView:face];  
    self.navigationItem.leftBarButtonItem = faceBtn; 

编辑:我在我的答案中添加了一行。我只是在日志中打印了一条消息“Hi”。这是工作。你可以试试吗?

谢谢。

+0

Yuvaraj我非常感谢你做了什么,显然它不叫 –

+0

@EvgeniyKleban请尝试我编辑的答案。谢谢。 –

+0

Yuvaraj.M谢谢一切正常!我刚刚从你和下面的家伙得到了2个正确的答案,我很高兴我解决了这个问题!请接受我最良好的祝愿! :) –

1
UIBarButtonItem *addButton = [[UIBarButtonItem alloc]initWithImage:faceImage style: UIButtonTypeCustom target:self action:@selector(addProduct:)]; 

    self.navigationItem.leftBarButtonItem = addButton; 

ü正在创建一个默认的按钮,你需要创建一个UIButtonTypeCustom型按钮...

+0

谢谢你,我明白这一点,但不能管理的东西:) –

0

斯威夫特任何人接受的答案的版本

var settingsButton = UIButton.buttonWithType(UIButtonType.Custom) as UIButton 
settingsButton.frame = CGRect(origin: CGPointZero, size: CGSize(width: 36, height: 36)) 
settingsButton.setImage(image, forState: UIControlState.Normal) 
settingsButton.addTarget(self, action: "buttonActionHere:", forControlEvents: UIControlEvents.TouchUpInside) 

let rightBarButtonItem = UIBarButtonItem(customView: settingsButton) 
navigationItem.setRightBarButtonItem(rightBarButtonItem, animated: true) 
3

或......只写两行iOS 8 Swift代码。 (甚至可能在iOS 7上工作)

let doneButtonAsLeftArrow = UIBarButtonItem(image: UIImage(named: "LeftArrow24x24.png"), style: .Plain, target: self, action: "doneButtonPushed") 
    navigationItem.leftBarButtonItem = doneButtonAsLeftArrow 
+0

这应该是被接受的答案。 – reinaldoluckman