2012-03-23 9 views
0

以下のコード(iOSの下位バージョン用)を使用してUINavigationBarをサブクラス化し、各ナビゲーションコントローラ(各ナビゲーションコントローラ)にUITabBarControllerに適用します。UITabBarControllerの "More" View Controller用のカスタムナビゲーションバー

@implementation CustomNavigationBar 

- (void)drawRect:(CGRect)rect { 
    UIImage *image = [UIImage imageNamed:@"customNavigationBar.png"]; 
    [image drawInRect:CGRectMake(0, 0, self.frame.size.width, self.frame.size.height)]; 
} 

@end 

コードは目に見えてアクセス可能なビューコントローラに正常に動作しますが、他のビューコントローラにアクセスするには、「詳細」タブを押すと、カスタムイメージはこれ以上表示されません。私は何かを逃したか?

+0

は、より多くのドットが表示されます得るためにあなたのtabBarControllerのmoreViewControllerプロパティを使用することができます。 。 。 ??あなたのUITabBarControllerをどのように初期化しているかを示してください.... – Damo

+0

はい、それらは表示され、 'UITabController'はInterface Builderで初期化され、メインビューコントローラで処理されます。 Moreドットは現れますが、私はコントローラー自体に問題はなく、カスタマイズするだけです。すべてのビューコントローラは「その他...」タブに含まれているものとは別にカスタマイズされています – sooper

+0

UITabBarControllerにはいくつのビューコントローラがありますか?5を超えると思われますか? – Damo

答えて

1

私がMore View Controllerをカスタマイズする方法は、UITabBarController自体からデフォルトのより多くのコントローラを取得しないようにすることです。これはあなたが経験しているようなものです。

1独自の[その他のビューコントローラ]を作成します。それはあなたのUITabBarControllerを初期化するとき、あなたは初期化子に5 正確 View Controllerを送信し、カスタムの詳細ビューコントローラは、ルートビューであることを確認

2を、独自のカスタムアイコン

//MyMoreViewController.m 
- (id)initWithNibName:(NSString *)nibNameOrNil bundle:(NSBundle *)nibBundleOrNil 
{ 
    self = [super initWithNibName:nibNameOrNil bundle:nibBundleOrNil]; 
    if (self) { 
     // Custom initialization 
     self.title = NSLocalizedString(@"More", @"More"); 
     self.tabBarItem.image = [UIImage imageNamed:@"MyCustomMoreImage"]; 
    } 
    return self; 
} 

を持っているし、その後

ます5番目の項目のコントローラ - 通常は、より多くのビューコントローラがrootViewControllerに設定されているナビゲーションコントローラを使用します。

+0

この方法で唯一問題となるのは、「編集」モードでタブを並べ替えることができなくなることです。 – sooper

+0

良い点 - デフォルトのuitableviewのルック・アンド・フィールを持つことができないことに賛成して再注文を犠牲にし、それに満足していました。このようにしてはいけませんか、それとも自分でそれを再発明しなければなりません。 – Damo

1

UITabBarControllerは、そのUINavigationBarがあなたのクラスのインスタンスではありませんので、詳細項目のUINavigationControllerを作成し、代わりにUINavigationBarます。

iOS 5の外観APIを見て、ルックアンドフィールを変更することができます。

+0

私のアプリケーションを利用できるように真剣に検討していますiOS 5へのiOSのバージョン統計情報はどこにありますか?あなたの意見はどうですか? – sooper

+1

新しいアプリケーションでは、ベースがインストールされていないため、間違いなく実行します。 – pgb

1

あなたはより多くのナビゲーションコントローラ(私はiOS7のアプリでこれを使用)

UINavigationController *moreViewController = tabController.moreNavigationController; 
    if(moreViewController) 
    { 
     [moreViewController.navigationBar setBarTintColor: [UIColor yellowColor]]; 
     [moreViewController.navigationBar setTintColor: [UIColor whiteColor]]; 
    } 
関連する問題