2010-11-15 22 views
3

當我使用代碼 - (IBAction)onClick1:(id)發件人; (我的意思是我使用了代碼sender.tag,它沒有返回)。 )buttonTouched1:(UIButton *)sender;這裏發件人應該充當對象ID。IBaction上的發件人

回答

4

sender變量通常是發送動作消息的對象(這是不完全保證 - 例如,你可以自己發送一個動作消息,並通過任何你想要的 - 但是這它應該如何工作)。

您不能只在這些方法中寫入sender.tag,因爲點符號要求對象具有靜態類型,以便編譯器知道該屬性對應的消息。如果你改爲寫[sender tag],它會起作用。

6

發件人通常是將調用onClick1消息的對象。例如,如果您有一個按鈕,並且您將 - (IBAction)onClick1:(id)發件人信息與按鈕的「touch up inside」事件相關聯,那麼當您點擊該按鈕時,代表該按鈕的對象將被傳遞到onClick1:

-(IBAction)onClick1:(id)sender 
{ 
    UIButton *button = (UIButton*)sender; 
    NSLog(@"%@", button); 
} 
+0

如果你只是記錄它,你不需要給發送者一個靜態類型,而且你也不需要明確地施放它。如果你打算把發件人當作UIButton,那麼你可以將參數作爲UIButton輸入,而不是創建一個多餘的額外變量。 – Chuck 2010-11-15 07:06:54

+0

@Chuck是的,如果唯一的目的是記錄,那麼就沒有必要投。我只展示瞭如何獲取發件人的底層對象。雖然在這種情況下沒有必要將發件人強制轉換爲UIButton,但轉換將導致更清晰和更易讀的代碼。 – galexyus 2010-11-15 08:29:04

相關問題