2011-06-29 81 views
0

當可可編碼任何好處,我注意到,它定義IBAction時,因此下面的操作沒有必要有sender參數:有有(ID),發送方在IBAction爲

- (IBAction)showUserInfo:(id)sender; 

可以聲明爲

- (IBAction)showUserInfo; 

所以我不知道是否有除了具有發送操作的按鈕/菜單項的任何其他好處?只有其他情況我能想到的是幾乎沒有對象調用相同的IBAction。還要別的嗎?

回答

1

將方法連接到UI對象時,使用sender參數可能會很方便,該對象的值可能會更改,您可能需要使用該對象。

例如,如果我有線了一個方法,以一個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; 
} 
2

Doc說,

發件人參數通常識別控制發送動作消息(儘管它可以是由實際發件人取代的另一個目的)。這背後的想法與明信片上的返回地址類似。如果需要,目標可以向發件人查詢更多信息。

發件人參數可以幫助您從中獲取任何數據。例如,在UISegmentControl值更改上,如@Mark Adams所回答的那樣。因此,如果您不希望發件人提供任何信息,則可以省略它,例如- (IBAction)showUserInfo;示例。

相關問題