0

setActionビューにローカル関数へのボタンがあります。GameOptions.m私には次の機能があります:

- (void) changeSettings (UIBarButtonItem *) sender  {

// do something 
}

GameOptionsそしてそれを.mで開始するボタン:

[btn1 addTarget:self action:@selector(changeSettings:) forControlEvents:UIControlEventTouchUpInside];

今、私はそれを彼のビューからナビゲーションコントローラーに移動しましたrightBrButtonItem。これは、すべての設定を備えたmyVCsmallのインスタンスであり、使用するたびに使用されます。UIViewControllernavigationBarpop ,push

   UIBarButtonItem *buttonNav1 = [[UIBarButtonItem alloc] initWithCustomView:settingsView];
        [myVC.navigationItem setRightBarButtonItem:buttonNav1];

問題は、このボタンが彼のクラスになく、 .mGameOptionsでの実装で同じ関数を開始することです。GameOptions

次のことをしたいです:

buttonNav1 setAction:changeSettings;

しかし、それは不可能です。changeSettingは認識されません。

試しました:buttonNav1.action = self.しかし、私はこの関数を取得していません。パラメータのない関数のみです。のボタンからchnageSettingsを呼び出すにはどうすればよいですか?navigationBar

4

1 に答える 1

1

あなたがする必要があるのはあなたにオブジェクトUIBarButtonItemの存在を知らせることだけです。GameOptionsそれはあなたがで使っていたものですself

[btn1 addTarget:self action:@selector(changeSettings:) forControlEvents:UIControlEventTouchUpInside];

をインスタンス化した直後にUIBarButtonItem *buttonNav1、メッセージを送信できます。addTarget:action:forControlEvents:または、を使用する場合はsetAction、も使用することを忘れないでくださいsetTarget

GameOptionsだから今、あなたの質問は次のとおりです:オブジェクトのポインタをUIBarButtonItem;)に渡すための最もエレガントで効率的な方法は何ですか?

于 2012-09-29T12:57:57.550 に答える