0

私はナビゲーション コントローラーを持っており、それに 2 つのビューをプッシュしました。すべてのビューに表示する必要があるナビゲーション バーにボタンを表示したいと考えています。でも、こうして頑張ると…

UIButton *button =  [UIButton buttonWithType:UIButtonTypeCustom];
[button setBackgroundImage:[UIImage imageNamed:@"logo-57.png"] forState:UIControlStateNormal];
[button addTarget:self action:@selector(backButtonClicked) forControlEvents:UIControlEventTouchUpInside];
[button setFrame:CGRectMake(-2, 0, 57, 57)];

UIBarButtonItem *btnItem = [[UIBarButtonItem alloc] initWithCustomView:button];
root_obj_ab.navigationItem.rightBarButtonItem = btnItem;

コードを書いているローカルビューに追加しています。すべてのビューにボタンを設定するには?

ティア

4

4 に答える 4

1

すべてのナビゲーション項目にプログラムで同じボタンを追加したくない場合は、ボタン uibarbuttonitem を追加する必要があるナビゲーション バーにカテゴリを記述する必要があります。IOS より前のナビゲーション バーの背景色を変更するのと同じ話です。 5.0。

于 2012-08-10T07:03:28.280 に答える
0

この質問は、デザインパターンに関するものだと思います。Ricard Pérez del Campo はサブクラスの方法でこれに対処しました。これで十分うまくいくと思います。

ただし、同様のボタンを同じように機能させたい場合もありますが、これらのボタンにはいくつかの違いがあります。次に、これを行うために Creational Pattern を適用する か、 Factory Method Patternを使用するか、 Builder Patternを使用できます。

これがあなたの設計に役立つことを願っています。

サンプルをデモンストレーションするには、次のようにすることができます。

// Code in a CustomButtonFactory class
    + (UIBarButtonItem *)getCustomBackButtonItemForTarget:(id)target selector:(SEL)sel
    {
        UIButton *button = [UIButton buttonWithType:UIButtonTypeCustom];
        [button setBackgroundImage:[UIImage imageNamed:@"logo-57.png"] forState:UIControlStateNormal];
        [button addTarget:target action:sel forControlEvents:UIControlEventTouchUpInside];
        [button setFrame:CGRectMake(-2, 0, 57, 57)];

        UIBarButtonItem *btnItem = [[UIBarButtonItem alloc] initWithCustomView:button];

        return btnItem;
    }

毎回セレクターを実装したくなく、そのようなボタンがそれぞれ同じように機能することを確信している場合は、ファクトリ クラスにメソッドを実装できます。

于 2012-08-10T07:29:15.150 に答える
0

このボタンを持つカスタム ビュー コントローラーを作成し、すべてのビュー コントローラーをそのカスタム ビュー コントローラーのサブクラスとして作成するのはどうでしょうか。

于 2012-08-10T07:03:43.540 に答える
0

アプリケーション全体で機能するには、このコードをすべてのビュー コントローラーに配置する必要があります。

于 2012-08-10T07:03:58.047 に答える