0

在我的UINavigationController中,我通過故事板添加了一個添加按鈕。我的添加按鈕是來自iOS/xcode的默認「+」UIBarButtonItem。我想添加一個自定義背景圖片到按鈕。我的代碼不工作:不添加背景圖片。設置導航欄項目的背景圖像

-(void)addBackgroundToPlusSign 
{ 
    UIImage *addBkg = [UIImage imageNamed:@"plus_sign"]; 
    addBkg = [addBkg imageWithRenderingMode:UIImageRenderingModeAlwaysOriginal]; 
    [self.navigationItem.rightBarButtonItem setBackButtonBackgroundImage:addBkg forState:UIControlStateNormal barMetrics:0]; 
} 

我嘗試調用viewDidLoad的方法,然後在viewWillAppear。沒有運氣。

回答

1

你的問題是,你是在正確的導航按鈕設置後退按鈕的背景圖片...向右導航按鈕不是按鈕。從文檔:

此修改器僅適用於導航欄後退按鈕,並且 被其他按鈕忽略。

你想用setBackgroundImage:forState:barMetrics:

+0

啊哈!我正在使用'setBackButtonBackgroundImage'而不是'setBackgroundImage'。答對了!謝謝。複製和粘貼錯誤讓我很不好。 – 2014-09-26 23:08:49

+0

很高興幫助:) – Mike 2014-09-26 23:18:51

0

您可以添加的UIImageView或按鈕,例如:

UIButton *button = [[UIButton alloc] initWithFrame:CGRectMake(100, 0, 70, 30)]; 

[button setImage:[UIImage imageNamed:@"plus_sign"] forState:UIControlStateNormal]; 
[button addTarget:self action:@selector(your_method) forControlEvents:UIControlEventTouchUpInside]; 

UIBarButtonItem *buttonItem = [[UIBarButtonItem alloc] initWithCustomView:button]; 

self.navigationItem.rightBarButtonItem = buttonItem; 
+0

你正在回答我已經知道如何解決的另一個問題。我想要的是爲Xcode附帶的按鈕添加背景。如果您認爲加號是一個簡單的例子,那麼可以想象一個更復雜的按鈕,如垃圾桶或相機。 – 2014-09-26 23:05:18

0

嘗試這樣做:

UIBarButtonItem * addBtn = [[UIBarButtonItem alloc] initWithBarButtonSystemItem:UIBarButtonSystemItemAdd target:self action:@selector(btnHandler:)]; 

UIImage *addBkg = [UIImage imageNamed:@"plus_sign"]; 
addBkg = [addBkg imageWithRenderingMode:UIImageRenderingModeAlwaysOriginal]; 
[addBtn setBackgroundImage:addBkg forState:UIControlStateNormal barMetrics:0]; 

self.navigationItem.rightBarButtonItem = addBtn; 

我覺得曾經有一個錯誤在那裏設置一個現有按鈕的背景沒有工作,直到有人再次 - 添加到視圖堆棧。你也可以嘗試一下:

self.navigationItem.rightBarButtonItem = self.navigationItem.rightBarButtonItem;