3

基本的に、ビューにいくつかのボタンが必要です。「状態」を追跡できるように、すべての関数に 1 つの関数を呼び出してもらいたいと思います。

どのボタンがその機能を呼び出しているかを知るにはどうすればよいですか? とにかく送信者のテキストを取得する方法はありますか?

4

3 に答える 3

5

iOS では、IBAction メソッドを含むアクション メソッドは、次のシグネチャのいずれかを持つことができます (「UIKit の Target-Action 」を参照)。

- (void)action
- (void)action:(id)sender
- (void)action:(id)sender forEvent:(UIEvent *)event

送信者を受け入れるメソッド署名を使用すると、アクションをトリガーしたオブジェクトにアクセスできます。その後、タイトルやタグなど、呼び出し元オブジェクトのプロパティにアクセスできます。送信者をボタンへのポインターと比較して、この特定のイベントの送信者であるボタンを特定することもできます。

orif (sender == self.nextPageButton)よりも理解しやすく、破損する可能性が低いと信じているため、ポインターを比較することを好みます。IB のタグを見ても、コードがその意味を想定していることや、重要かどうかについては何もわかりません。UI を更新したり、アプリをローカライズしたりすると、タイトルが変更されますが、これらの変更にコードの変更も必要ありません。if (sender.tag == 4)if ([((UIButton *)sender).currentTitle isEqualToString:@"foo"])

于 2011-02-23T23:15:39.277 に答える
3

tagボタンの属性を設定します。

これは Interface Builder で行うことができます (フィールドを確認するだけです)。

次にコードで:

if (sender.tag == 0) {
} else if (sender.tag == 1)

于 2011-02-23T22:52:04.307 に答える
1

タグを明示的に設定する必要はありません。.h ファイルとそのプロパティで UIButton の IBOutlets を定義できます。

@property (nonatomic , retain) IBOutlet UIButton *myButton;

とメソッド

-(IBAction) browse : (id) sender; 

.m ファイルでは、メソッドを次のように実装できます。

-(IBAction) browse : (id) sender{

    if((UIButton *)sender == myButton){/*add the action here*/}
 } 

必要なボタンの数だけ if ステートメントをメソッドに追加します。対応するすべてのボタンの IBOutlets とセレクター ブラウズを接続してください。

メモリ リークを防ぐために、必ず dealloc メソッドで IBOutlets を解放してください。

お役に立てれば!!

于 2011-02-24T10:48:14.407 に答える