0

私は現在、SwitchViewsメソッドを呼び出すためのボタンをナビゲーションバーに追加するためにこれを行っています。

    UIBarButtonItem *backButton = [[UIBarButtonItem alloc] initWithTitle:@"Back to App" 
                                                                  style:UIBarButtonItemStyleBordered
                                                                 target:nil
                                                                action:@selector(switchViews:)];
self.navigationItem.leftBarButtonItem=backButton;
[backButton release];

このメソッドはたまたま別のクラス(SwitchViewController)にありますが、メソッド呼び出しがSwitchViewControllerで見つかるまで、レスポンダーチェーンを通過すると推測されるため、機能しています。

nilではなく自分のクラスにターゲットを設定する方法はありますか?

これにより、コードの読み取り、デバッグ、および保守が容易になると思います。

それは私よりも経験豊富なプログラマーへの簡単な答えだと確信しています...

ありがとう

4

1 に答える 1

0

理論的には、に設定targetしてnilもまったく機能しないはずですが、あなたが言うように、それでいくつかのインテリジェントなことを行うかもしれません。 target を nil に設定すると、明らかにアクションがレスポンダー チェーンに送信されます。それは知りませんでした。

クラスに設定するには、まずそのクラスへの参照が必要です。誰がそのクラスを保持していますか? アプリケーションデリゲート?アプリケーション デリゲートは、そのクラスの参照をこのクラスに渡すことができますか? このクラスがプログラムで初期化されている場合は、initメソッドを微調整して新しい引数 (クラス) を取ることもできます。

上記のコード スニペットを含むメソッドはどのようになりますか? それはinitメソッドですか?viewDidLoad メソッド?

それが init メソッドであり、NIB ファイルから呼び出される場合 (つまりinitWithCoder:、.

((YOURAPPDELEGATE *)[[UIApplication sharedApplication] delegate]).THATCLASS

上記は、@propertyforを適切に設定したことを前提としていますTHATCLASS(これは意図したものですtarget)。

@property (nonatomic, retain) ExampleClass *THATCLASS;
于 2010-07-06T10:03:30.767 に答える