UIBarButtonItem
aに埋め込まれているときにa をカスタマイズしようとしていUINavigationBar
ます。
背景画像とタイトル テキスト属性をカスタマイズしたいと思います。
ただし、ナビゲーション バーが に含まれている場合、UIPopoverController
これらのカスタマイズを実行したくありません。
これは私のコードです:
//1.
[[UIBarButtonItem appearanceWhenContainedIn:[UINavigationController class], nil]
setBackgroundImage:[UIImage imageNamed:@"navigationBarBackgroundNormal"]
forState:UIControlStateNormal
forBarMetrics:UIBarMetricsDefault];
//2.
[[UIBarButtonItem appearanceWhenContainedIn:[UINavigationController class], nil]
setBackgroundImage:[UIImage imageNamed:@"navigationBarBackgroundHighlighted"]
forState:UIControlStateHighlighted
forBarMetrics:UIBarMetricsDefault];
//3.
[[UIBarButtonItem appearanceWhenContainedIn:[UINavigationController class], nil]
setTitleTextAttributes:@{UITextAttributeTextColor:[UIColor blueColor]}
forState:UIControlStateNormal];
//4.
[[UIBarButtonItem appearanceWhenContainedIn:[UINavigationController class], nil]
setTitleTextAttributes:@{UITextAttributeTextColor:[UIColor whiteColor]}
forState:UIControlStateHighlighted];
//5.
[[UIBarButtonItem appearanceWhenContainedIn:[UINavigationController class], [UIPopoverController class], nil]
setBackgroundImage:nil
forState:UIControlStateNormal
forBarMetrics:UIBarMetricsDefault];
//6.
[[UIBarButtonItem appearanceWhenContainedIn:[UINavigationController class], [UIPopoverController class], nil]
setBackgroundImage:nil
forState:UIControlStateHighlighted
forBarMetrics:UIBarMetricsDefault];
//7.
[[UIBarButtonItem appearanceWhenContainedIn:[UINavigationController class], [UIPopoverController class], nil]
setTitleTextAttributes:nil
forState:UIControlStateNormal];
//8.
[[UIBarButtonItem appearanceWhenContainedIn:[UINavigationController class], [UIPopoverController class], nil]
setTitleTextAttributes:nil
forState:UIControlStateHighlighted];
問題は
、ナビゲーション コントローラーをポップオーバーの contentViewController として作成することです。
別のView Controllerが押されると、戻るボタンが自動的に作成され、適用される外観は5、6、7、8行目からのものです-これは良いことです。
ただし、新しいものを作成しUIBarButtonItem
て として割り当てると、rightBarButtonItem
代わりに行 3、4、5、6 が適用されます (つまり、外観プロキシは、何らかの理由で、行 3、4 のタイトル属性を適用しましたが、ナビゲーション バーはしかし、背景画像に関しては、外観プロキシは行を正しく適用しました 5,6)
ナビゲーション バーがポップオーバーにない場合、すべて正常に機能します (1、2、3、4 行目が適用されます)。
UIBarButtonItem
ナビゲーションコントローラーがポップオーバーにあるときに、外観プロキシが戻るボタンに対しては正常に機能するのに、作成中のプロキシでは機能しない理由がわかりません。