1

UINavigationControllerクラスをサブクラス化して、背景画像、ナビゲーションバーのサイズ、戻るボタン、タイトルフォントなどを変更しようとしています。数時間とたくさんの読書の後、私はUINavigationControllerクラスをサブクラス化するべきではないことを理解しました...

特定のデザインを作成し、そのデザインをカスタムのNavigationControllerを使用するすべての画面に転送したいと思います...

これまでのところ、これに対する洗練されたソリューションはありません。ほとんどのソリューションは、次の画面(次のビュー)にのみ表示されるように何かを構成することに基づいています。

どうすればこれを達成できますか?たぶんカテゴリを使用していますか?前もって感謝します。

4

4 に答える 4

8

のカスタム leftbarbutton のコードを表示していますUINavigationcontroller。このコードを各View Controllerと両方のボタン(右と左)に追加できます

    leftButton = [UIButton buttonWithType:UIButtonTypeCustom];    
    [leftButton setImage:[UIImage imageNamed:@"Yourcutomeimage.png"] forState:UIControlStateNormal];    
    leftButton.frame = CGRectMake(0, 0, 30, 30);
    [leftButton addTarget:self action:@selector(youraction:) forControlEvents:UIControlEventTouchUpInside];  

    self.navigationItem.leftBarButtonItem = [[[UIBarButtonItem alloc] initWithCustomView:leftButton]autorelease];

//また

self.navigationItem.rightBarButtonItem = [[[UIBarButtonItem alloc] initWithCustomView:leftButton]autorelease];

うまくいけば、これはあなたを助けるでしょう..

于 2012-05-09T13:12:33.460 に答える
1

はい @Nit は正しいです。これは をカスタマイズする方法ですが、持っているUINavigationControllerすべてのものに対してそれを行いたくない場合は、メソッドのサブクラスであるクラスUIViewControllerを作成し、すべてのボタンをその方法で設定できます@Nit は記述してから、クラスのサブクラスにする必要があるすべてを作成します。UIViewControllerBaseUIViewControllerviewDidLoadUIViewControllerUIViewControllerBase

于 2012-05-09T13:17:07.687 に答える
0

カスタムの戻るボタンをuinavigationcontrollerに追加する場合は、navigationItem.backBarButtonItemを使用して、uinavigationcontrollerを初期化するクラスに実装する必要があります。サンプル :-

UIBarButtonItem *backButton = [[UIBarButtonItem alloc] initWithImage:[UIImage imageNamed:@"btnImage.png" style:UIBarButtonItemStyleBordered target:youtarget action:@sel(your action)];  
self.navigationItem.backBarButtonItem = backButton; [backButton release];
于 2012-05-09T13:25:37.353 に答える