私は4つのタブを持つアプリケーションを持っています。各タブはUINavigationControllerです。 4つのUINavigationBarタブは同じように見え、カスタム背景画像、カスタムのBackButton、およびカスタムの右ボタンで機能をトリガーする必要があります。iPhoneカスタムUINavigationBarボタン
それぞれのRootViewControllerではなく、自分のコードでこれらのカスタマイズを1回だけ行いたいと思います。
私は私のappDelegateにこのコードを挿入することにより、カスタムの背景画像を持っているために管理:
@implementation UINavigationBar (CustomImage)
- (void)drawRect:(CGRect)rect {
UIImage *image = [UIImage imageNamed: @"MyNavigationBar.png"];
[image drawInRect:CGRectMake(0, 0, self.frame.size.width, self.frame.size.height)];
}
@end
しかし、私は戻って、右のボタンをカスタマイズしたり、右ボタンのアクションを指定するために管理していませんでした。
背景画像の場合と同様に、appDelegateでこれを行う方法はありますか?
また、各RootViewControllerでカスタマイズを行う必要がありますか?
おかげで完全なのproyectのnavigationbar、バーボタン項目を変更しますが、私は、各RootViewControllerにこのコードを記述する必要があります(各NavigationControllerについて)。私が望むのは、私のappDelegateにカテゴリを持つ背景画像のためにしたように、すべてのNavigationControllerに対してコードを一度しか書くことができないようにすることです。 –
その場合、上記のメソッドをカプセル化し、それぞれの適用可能なクラスで呼び出すオブジェクトを作成します。イメージ、セレクター、およびボタンフレームをパラメーターとして渡すことができます。 – user298261