2011-06-29 9 views
0

ココアとコーディングである(ID)、送信者のいずれかの利点は、私は、それゆえ、次のアクションをIBActionを定義するとき、それはsenderパラメータを持っている必要はありませんことに気付きましたありますIBAction

- (IBAction)showUserInfo; 

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

答えて

1

sender引数を使用すると、値を変更できるUIオブジェクトにメソッドを接続しているときに作業する必要があります。例えば

は私が変更を加え、その値に基づいて、次に、セグメント・インデックスを選択してい得るため sender:引数として渡されたオブジェクトを使用することができ、 UISegmentedControlする方法を有線およびそれがUIControlEventValueChangedに制御イベントの設定された場合UIで

2
-(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; 
} 

Doc(それが実際の送信者で置換され、別のオブジェクトであってもよい)センダパラメータは、通常、アクションメッセージを送信する制御を識別し、

言います。この背後にある考え方は、はがきの返信先住所に似ています。ターゲットは送信者に問い合わせが必要な場合に詳細情報を問い合わせることができます。

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