コードからibactionを呼び出す最良の方法は何ですか?
-
04-10-2019 - |
質問
たとえば、私は持っていると言います 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
(これにより、コントローラーの実装をきれいに保ちます)。
所属していません StackOverflow