質問

たとえば、私は持っていると言います ibaction それはaに接続されています uibutton インターフェイスビルダー。

- (IBAction)functionToBeCalled:(id)sender
{
   // do something here   

}

私のコードを使用すると、たとえば別の方法で、それを呼び出すための最良の方法は何ですか ibaction?

このように呼び出そうとすると、エラーがあります。

[self functionToBeCalled:];

しかし、私がこのようにそれを呼びかけようとするなら(少しだまされている、私は思う)、それは正常に動作すると思います:

[self functionToBeCalled:0];

適切に呼び出す適切な方法は何ですか?

役に立ちましたか?

解決

適切な方法は次のとおりです。

- [self functionToBeCalled:nil] 

NIL送信者に合格するために、通常のフレームワークを通じて呼び出されなかったことを示します。

また

- [self functionToBeCalled:self]

送信者として自分自身を渡すために、これも正しいです。

選択するものは、関数が正確に何をするか、そして送信者が何を期待するかによって異なります。

他のヒント

意味的に言えば、呼び出します IBAction UIイベントのみでトリガーする必要があります(たとえば、ボタンタップなど)。複数の場所から同じコードを実行する必要がある場合は、そのコードを抽出できます。 IBAction 専用の方法に、両方の場所からその方法を呼び出します。

- (IBAction)onButtonTap:(id)sender {
    [self doSomething];
}

これにより、送信者に基づいて追加のロジックを実行できます(おそらく、同じアクションを複数のボタンに割り当て、に基づいて何をすべきかを決定することができます sender パラメーター)。また、書く必要があるコードの量も削減します IBAction (これにより、コントローラーの実装をきれいに保ちます)。

ライセンス: CC-BY-SA帰属
所属していません StackOverflow
scroll top