これについて「もっと」尋ねられていないことに驚いています:-)
私のアプリは、複数のセクションを持つ標準のタブバーコントローラーです。各セクション(タブ)には、いくつかのビューコントローラー(基本的なテーブルビュー+詳細ビュータイプのセットアップ)を制御するナビゲーションコントローラーが含まれています。6番目のタブを追加したので、iOSは最後の2つのタブを制御するデフォルトの「その他」タブを作成します。ナビゲーションバーの中央にある[その他]テキスト(注:ボタンのテキストやタブ自体のタイトルではありません)を削除し、カスタムの背景画像をナビゲーションバーに適用する必要があります。
注:この質問は、「その他」のナビゲーションバーのカスタマイズに関するものです。iOSで作成されていないすべてのナビゲーションバーの背景画像とtitleViewテキストを正常に変更しました。
私のアプリデリゲートでは、アプリは次のようにまとめられています。
ビューコントローラの作成:
ViewController1 *vc1 = [ViewController1 alloc] initWithNibName@"View1" bundle:nil];
vc1.title = @"VC1";
vc1.tabBarImage.image = [UIImage imageNamed:@"image1.png"];
ビューコントローラvc2からvc6について、上記のルーチンをさらに5回繰り返します。
個々のナビゲーションコントローラーを作成します。
UINavigationController *nc1 = [UINavigationController alloc] initWithRootViewController:vc1];
navコントローラーnc2-nc6に対してさらに5回繰り返します。
ナビゲーションコントローラーをタブバーコントローラーに追加する
self.tabBarController.viewControllers = [NSArray arrayWithObjects: vc1, vc2, vc3, vc4, vc5, vc6, nil];
上記のコードはすべて完全に機能します。問題ない。
次に、カスタムの背景画像をMoreナビゲーションコントローラーに追加します。
if (self.tabBarController.moreNavigationController){
if ([self.tabBarController.moreNavigationController.navigationBar respondsToSelector:@selector(setBackgroundImage:forBarMetrics:)] ) {
UIImage *image = [UIImage imageNamed:@"navlogo.png"];
[self.tabBarController.moreNavigationController.navigationBar setBackgroundImage:image forBarMetrics:UIBarMetricsDefault];
} else {
UINavigationBar *navbar = self.tabBarController.moreNavigationController.navigationBar;
UIImage *headerImg = [UIImage imageNamed:@"navlogo.png"];
[navbar setBackgroundImage:headerImg forBarMetrics:UIBarMetricsDefault];
}
}
これも問題なく動作します。問題ない
カスタム背景にはクライアントのロゴのデッドセンターが含まれているため、デフォルトで「詳細」と表示されているtitleViewのテキストを削除する必要があります。ナビゲーションボタンのテキストではなく、ナビゲーションバーの中央にあるラベルについて話していることに注意してください。
論理的には、これが機能すると想定されます。
UILabel *label = [[UILabel alloc] init];
label.text = @"";
self.tabBarController.moreNavigationController.navigationItem.titleView = label;
...これはすべての個別のビューコントローラーで行うため、self.tabBarController.moreNavigationControllerなどをself.navigationItem.titleViewに置き換えます。
しかし、これは機能しません!これとまったく同じコードを使用して、すべてのナビゲーションコントローラーの背景画像とtitleViewテキストの両方を正常に変更できます(ここでも、moreNavControllerのものをself.navigationController.navigationItemに置き換えます...)。ただし、アプリデリゲートでは、背景画像のみを設定でき、MorenavコントローラーのtitleViewは設定できません。
任意の解決策をいただければ幸いです。
VB