2012-06-30 51 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