0

に を正常に追加しましたrightBarButtonItemが、navigationBarのタイプごとに 1 回ではなく、そのためのコードを 1 回だけ表示したいと考えていますViewController。これが私の現在の設定です:

                -->TVC
               |
NVC--->TVC--->TVC--->VC

これまでのところUITableViewController、ボタンを追加するためのコードをサブクラス化し、サブクラスに移動しました。私の3つすべてTableViewControllersがそのサブクラスに設定されており、完全に機能します。

ただし、ボタンを表示するために自分の孤独が必要ですViewControllerが、TVC サブクラスからコードを複製せずにこれを達成する方法がわかりません。サブクラス化は正しい答えですか、それとも別のアプローチが必要ですか?

編集:

@CarlVeazey - もちろん、viewDidLoad 関数から呼び出します。

self.navigationItem.rightBarButtonItem = [[UIBarButtonItem alloc] initWithTitle:@"BETA" style:UIBarButtonItemStylePlain target:self action:@selector(betaPressed)];
4

1 に答える 1

0

カテゴリへのプルアップ リファクタリングを行いUIViewControllerます。プロジェクトに既に 1 つある場合は、このコードをそこに追加します。それ以外の場合は、Xcode で cmd-N を押して新しいファイルを作成し、[Objective-C カテゴリ] を選択UIViewControllerして [カテゴリ オン] フィールドに入力します。

インターフェイスで、次のメソッド宣言を追加します。

- (void)onfConfigureRightNavigationBarButton;

そして、実装にこのメソッドの実装を追加します。

- (void)onfConfigureRightNavigationBarButton
{
    self.navigationItem.rightBarButtonItem = [[UIBarButtonItem alloc] initWithTitle:@"BETA" 
                                                                              style:UIBarButtonItemStylePlain 
                                                                             target:self 
                                                                             action:@selector(betaPressed)];
}

次に、任意のUIViewControllerサブクラスで、カテゴリ ヘッダーをインポートして、このメソッドを呼び出すことができます。の空の実装をカテゴリに追加することもできますbetaPressed:

ところで、ONF は私が仕事以外のコーディングに使用するプレフィックスなので、プロジェクトに既にあるプレフィックスを使用するか、カテゴリ名の競合を気にしない場合はまったく使用しません。

于 2012-09-05T05:28:32.267 に答える