2011-05-13 42 views
0

我使用界面生成器創建了一些UIBarButtonItem,並嘗試將按鈕自定義爲綠色。雖然我無法找到改變按鈕背景顏色的方法,但我決定以這種方式編碼: IBOutlet UIBarButtonItem * btnDone;如何更改UIBarButtonItem使用界面生成器創建的背景圖像

-(void)viewDidLoad { 
    [super viewDidLoad]; 

    UIImage *buttonImage = [[UIImage imageNamed:@"btnGreen.png"] stretchableImageWithLeftCapWidth:10 topCapHeight:0]; 
    UIButton *doneButton = [UIButton buttonWithType:UIButtonTypeCustom]; 
    [doneButton setBackgroundImage:buttonImage forState:UIControlStateNormal]; 
    [doneButton setTitle:@"Done" forState:UIControlStateNormal];  
    [doneButton addTarget:self action:@selector(saveDateEdit:) forControlEvents:UIControlEventTouchUpInside]; 
    [doneButton.titleLabel setFont:[UIFont boldSystemFontOfSize:13]]; 
    doneButton.frame = CGRectMake(0.0, 0.0, 50, 30); 
    btnDone = [[UIBarButtonItem alloc] initWithCustomView:doneButton]; 
    [doneButton release]; 
} 

我創建IBOutlet並鏈接到界面構建器的按鈕,而我嘗試在第一次加載期間覆蓋此按鈕。但是,它顯示的是默認按鈕。

想知道爲什麼會發生這種情況?或者甚至更好的人可以建議我更好的方式改變我的UIBarButtonItem爲綠色。

感謝您的幫助!

+0

爲什麼不改變'UIButton'圖像** [返回按鈕setImage:[UIImage的imageNamed:@ 「wo.png」] forState:UIControlStateNormal]; ** – 2011-05-13 14:32:14

+0

如果我setImage它將取代我的標題或前面的措辭。所以我必須設置爲背景。 XD – TonyTakeshi 2011-05-13 14:38:09

+0

最後,我通過手動編碼所有UIButton並將其添加到工具欄視圖來解決此問題。 – TonyTakeshi 2011-05-19 04:53:23

回答

0

你缺少一個點,

你去指的btnDone對象 - 作爲第一個使用你和IBOutlet然後去reffer使用分配給它btnDone = [[UIBarButtonItem alloc] init...] ..你應該做的是編程方式添加它,而不是使用IBOutlet。它會做你的工作。

感謝,

+0

謝謝拉文。基本上我已經創建了帶界面生成器的UIBarButtonItem。我正在尋找簡單的方法來在界面構建器或代碼上對其進行定製,而不是重新編碼整個界面。 – TonyTakeshi 2011-05-13 14:41:35

+0

嘿,你不需要在代碼中添加更多的東西,只需要把self.navigationItem.rightBarButtonItem = btnDone;只是以編程方式創建它之後。你也需要從xib中移除它。 – Ravin 2011-05-13 15:00:02