2013-11-22 47 views
0

在我的詳細視圖控制器(導航控制器應用程序的一部分),我已經添加了自定義的「返回」按鈕,這樣的:如何更改欄按鈕項目顏色?

- (void)loadView 
{ 
    [super loadView]; 

    UIButton *backButton = [[UIButton alloc] initWithFrame: CGRectMake(0, 0, 10.0f, 24.0f)]; 

    UIImage *backImage = [UIImage imageNamed:@"left_arrow_icon"]; 
    [backButton setBackgroundImage:backImage forState:UIControlStateNormal]; 

    [backButton setTitle:@"" forState:UIControlStateNormal]; 
    [backButton addTarget:self action:@selector(popBack) forControlEvents:UIControlEventTouchUpInside]; 

    UIBarButtonItem *backButtonItem = [[UIBarButtonItem alloc] initWithCustomView:backButton]; 

    self.navigationItem.leftBarButtonItem = backButtonItem; 
} 

-(void) popBack { 
    [self.navigationController popViewControllerAnimated:YES]; 
} 

正如你可以看到我添加離開欄按鈕並指定「popBack」行動。基本上left_arrow_icon是銀色的,但是當我按下它時,iOS會將其更改爲深灰色。

我的問題是,我可以(以及如何)將初始顏色更改爲白色?那可能嗎?

編輯。我用xcode5

EDIT2: 那簡化版,工作太 enter image description here

+0

http://stackoverflow.com/questions/11583603/iphone-set-tint-color-of-back-bar-button-item – user241641

+0

該解決方案僅用於更改我的圖標通過故事板添加了。但是我在代碼中添加了這一個圖標,並且它不會更改。它保持銀色.. – Marshall

回答

0

試試這個代碼 -

[backbutton setTitleTextAttributes: 
    [NSDictionary dictionaryWithObjectsAndKeys:[UIColor blackColor], UITextAttributeTextColor, 
    [UIColor blackColor], UITextAttributeTextShadowColor, 
    [NSValue valueWithUIOffset:UIOffsetMake(0, -1)], UITextAttributeTextShadowOffset, 
    [UIFont fontWithName:HELVETICA_REGULAR_FONT size:17.0], UITextAttributeFont, nil] forState:UIControlStateNormal]; 
+0

它不起作用:/ – Marshall

+0

你試過這個嗎? [.... NSDictionary dictionaryWithObjectsAndKeys:[UIColor whiteColor],UITextAttributeTextColor,......] –

+0

嗯,你寫了backbutton(在我的例子中是UIButton)。 UIButton沒有setTitleTextAttributes方法。所以我認爲,你的意思是backButtonItem。所以我做了(在我的edit2掠奪問題)..它不起作用 – Marshall

0

試試這個代碼。它完美對我來說 -

UIImageView *navigationBarImage = [[UIImageView alloc] initWithImage:[UIImage imageNamed:@"Navigation.png"]]; 
navigationBarImage.frame = CGRectMake(0, 0, 320, 44); 
navigationBarImage.userInteractionEnabled = YES; 
navigationBarImage.backgroundColor = [UIColor colorWithRed:28.0/255.0 green:53.0/255.0 blue:102.0/255.0 alpha:1.0]; 
[self.view navigationBarImage]; 
[navigationBarImage release]; 

UIButton *backBarBtn1 = [UIButton buttonWithType:UIButtonTypeCustom]; 
backBarBtn1.frame = CGRectMake(13, 12, 20, 20); 
[backBarBtn1 setImage:[UIImage imageNamed:@"ic_back3.png"] forState:UIControlStateNormal]; 
backBarBtn1.backgroundColor = [UIColor clearColor]; 
[backBarBtn1 addTarget:self action:@selector(backBtnAction:) forControlEvents:UIControlEventTouchUpInside]; 
[self.view addSubview:backBarBtn1]; 
+0

爲什麼你要聲明UIImageView?你可以粘貼你的loadView方法嗎? – Marshall

+0

其實,在這裏我想創建自定義的navigationBar,並且該圖像視圖是用於navigationBar圖像的。 – Smita

+0

我只需要將按鈕添加到導航欄。 我想在左上角有我自己的png圖標。 png文件中的箭頭是銀色的。通過使用上面顯示的代碼,我可以看到我的箭頭,「回去」的作品也可以......但是我想讓這個圖標變成純白色。必須有一種方法,因爲Xcode或「sth」將此淺銀色改爲深灰色(按下按鈕時):/ – Marshall