0

sendercocoa でコーディングするとき、 を定義するときにパラメーターを指定する必要がないことに気付きましたIBAction。したがって、次のアクションを実行します。

- (IBAction)showUserInfo:(id)sender;

として宣言することができます

- (IBAction)showUserInfo;

アクションを送信したボタン/メニュー項目以外に何かメリットがあるのでしょうか? 私が考えることができる唯一の他の状況は、同じ IBAction を呼び出すオブジェクトがほとんどないことです。他に何か?

4

2 に答える 2

2

ドクター曰く、

通常、senderパラメーターは、アクション メッセージを送信するコントロールを識別します (ただし、実際の送信者によって別のオブジェクトに置き換えられる場合もあります)。この背後にある考え方は、はがきの返信先住所に似ています。ターゲットは、必要に応じて送信者に詳細情報を問い合わせることができます。

送信者パラメーターは、そこからデータが必要な場合に役立ちます。たとえば、@Mark Adamsの回答のように、UISegmentControl値の変更について。したがって、送信者からの情報が必要ない場合は、- (IBAction)showUserInfo;例のように省略できます。

于 2011-06-29T05:49:51.133 に答える
1

sender値が変更される可能性があり、操作が必要な UI オブジェクトにメソッドを接続する場合は、引数を使用すると便利です。

たとえば、メソッドを に接続し、そのUISegmentedControlコントロール イベントを UIControlEventValueChanged に設定すると、sender:引数として渡されたオブジェクトを使用して、選択されたセグメント インデックスを取得し、値に基づいて UI を変更できます。

-(IBAction)segmentedControlValueChanged:(id)sender
{
    UISegmentedControl *control = (UISegmentedControl *)sender;

    // Show or hide views depending on the selected index of the segmented control.
    if (control.selectedSegmentIndex == 0)
        someView.hidden = YES;
    else 
        someView.hidden = NO;
}
于 2011-06-29T05:45:40.983 に答える