2011-07-24 5 views
4

下記のコードを使用して、ナビゲーションバーのバックボタンのテキストの色を(赤に)設定しようとしています。 (注:以下のコードは「前回の」ビューコントローラに既にある、この場合には「人気の」ビューコントローラで:。ナビゲーション項目の戻るボタンのテキストとテキストの色を変更できません

//Customize Back button 
UIView *backButtonView = [[UIView alloc]initWithFrame:CGRectMake(0, 0, 30, 40)]; 
UILabel *backButtonLabel = [[UILabel alloc]initWithFrame:CGRectMake(0, 0, 30, 40)]; 
backButtonLabel.text = @"back"; 
backButtonLabel.textColor = [UIColor colorWithHexString:@"cf212a"]; 
[backButtonView addSubview:backButtonLabel]; 

UIBarButtonItem *backButton = [[UIBarButtonItem alloc]initWithCustomView:backButtonView]; 
self.navigationItem.backBarButtonItem = backButton; 

しかし、私は私が望む効果を得ていないのです、私はまだ取得していますbackbuttonitemがオンに見られるuibarbuttonitemであるため、デフォルト白色の戻るボタンのテキスト。テキストは「戻る」に変更されていないだけでなく

enter image description here

は、どのように私はこの?

答えて

4

ザッツを解決することができます次のビューコントローラ現在のView Controllerではなく、現在のView Controllerの上にプッシュされます。

上記のコードで実行しようとしているように、現在のビューのバックボタンを設定したい場合は、その前に表示されているビューコントローラ(その下のスタック)にコードを移動するだけでなく、前のビューコントローラで設定されたカスタム戻るボタンを表示するビューコントローラをプッシュします。これは、戻るボタンが新しいビューコントローラをプッシュしようとしている前のビューコントローラに属しているからです...

+0

ですが、私はまだ変更することはできませんよ戻るボタン。私はカスタムビュー(backButtonView)を追加する方法は正しいですか? – Zhen

+0

あなたは通常のuibarbuttonitemで試してから、カスタムビューを見て、違いがあるかどうか確認してください。 – Robin

1

私は、titleプロパティのみが、途中で長いタイトルを持ち、後ろのボタンで短いタイトルを持つことができます。

カスタム "戻るボタン"を追加する最も簡単な方法は、UINavigationItem.leftBarButtonItemを設定することです。ターゲット/アクションを適切に設定する必要があります。

+0

私は複数のビューコントローラを持っているため、「戻るボタン」を1つずつカスタマイズするのに非常に非効率です。さらに、複数のビューコントローラが別のビューコントローラを呼び出すことができます。この場合、どのようにターゲット/アクションを設定できますか? – Zhen

+0

ターゲットは「自己」で、アクションはnavコントローラからポップするものです(恐らく、おそらく)。おそらく、UINavigationBarにカテゴリを関連付けるハッキーな方法もありますが、私はそこに行かないでしょう。 –

1

単純なUIViewControllerサブクラスをまとめて、テキストの色を変更できるカスタマイズ可能な戻るボタンを追加しました。基本的にleftBarButtonItemプロパティを使用している間に/willDisappearロジックを追加して、UINavigationControllerのように戻るボタンをアニメートします。

https://github.com/typeoneerror/BBCustomBackButtonViewController

1

これは私のために働きました。ボタンの色を調整するために、以下にredColorを置き換え

[[UIBarButtonItem appearance] setTintColor:[UIColor redColor]];

colorWithRed:0/255.0 green:144/255.0 blue:200/255.0 alpha:1.0// pick your color using this 

は、必ずあなたがナビゲーションボタンのすべての色を変更することができ、これを使用して

これをプッシュするビューコントローラに配置します。このバックボタンの色を表示するビューコントローラではありません。ロビンが説明したように。

0

問題は、グローバルレベルでボタンのフォントと色を戻すための良い方法がないことです。それは現在のiOS 5にあります。そのために、ここではtypeoneerrorのhttps://github.com/typeoneerror/BBCustomBackButtonViewControllerを使用しています。

しかし、他のボタンやメニューの外観を損なうことなく、ナビゲーションバーのボタンのテキストと色合いのプロパティをグローバルレベルで設定することができます。私は次のようなコードを使用しています:

[[UIButton appearanceWhenContainedIn:[UINavigationBar class], nil] setTitleColor:[UIColor colorWithRed:102.0f/255.0f green:102.0f/255.0f blue:102.0f/255.0f alpha:1.0f] forState:UIControlStateNormal]; 
[[UIButton appearanceWhenContainedIn:[UINavigationBar class], nil] setTitleShadowColor:[UIColor colorWithWhite:1.0 alpha:0.75] forState:UIControlStateNormal]; 
[[[UIButton appearanceWhenContainedIn:[UINavigationBar class], nil] titleLabel] setShadowOffset:CGSizeMake(1.0, 1.0)]; 

私のプロジェクトの一つです。私は- (BOOL)application:(UIApplication *)application didFinishLaunchingWithOptions:(NSDictionary *)launchOptions

1

ベスト道からそれを呼んでいる私は、グローバルに設定することがわかったり、ローカルに上記のコードは、すでに以前のViewControllerに追加され

[[UIBarItem appearance] setTitleTextAttributes: 
     [NSDictionary dictionaryWithObjectsAndKeys: 
     [UIColor colorWithRed:220.0/255.0 green:104.0/255.0 blue:1.0/255.0 alpha:1.0], UITextAttributeTextColor, 
     [UIColor colorWithRed:1.0 green:1.0 blue:1.0 alpha:1.0], UITextAttributeTextShadowColor, 
     [NSValue valueWithUIOffset:UIOffsetMake(0, 1)], UITextAttributeTextShadowOffset, 
     [UIFont fontWithName:@"AmericanTypewriter" size:0.0], UITextAttributeFont, 
     nil] 
     forState:UIControlStateNormal]; 
0
self.navigationItem.backBarButtonItem.tintColor = [UIColor blackColor];