簡體   English   中英

通過選擇器傳遞參數

[英]pass parameter through selector

這里有一個類似的問題,但由於某種原因我無法讓它工作。

我正在創建很多按鈕,所以我使用代碼動態創建它們。 所以下面的代碼創建了一個按鈕,當它在touchdown時它執行aMethod:

UIButton *button = [UIButton buttonWithType:UIButtonTypeRoundedRect];
[button addTarget:self 
           action:@selector(aMethod)
 forControlEvents:UIControlEventTouchDown];
[button setTitle:@"Hello" forState:UIControlStateNormal];
button.frame = CGRectMake(40.0, 200.0, 170.0, 40.0);
[self.view addSubview:button];

-(void) aMethod{
   //code
}

在 aMethod 中,我想知道按下了哪個按鈕,因為許多按鈕都指向該方法。 因此,我需要我的 aMethod 看起來像:

-(void) aMethod:(id) sender{
   //code
}

如果我改變 aMethod 那么我必須改變選擇器:

[button addTarget:self 
               action:@selector(aMethod:)
     forControlEvents:UIControlEventTouchDown];

當我點擊按鈕時,我得到一個錯誤。 因此,通過閱讀我發布的第一個鏈接上的帖子,我發現選擇器將傳遞一個按鈕,所以我嘗試將 aMethod 更改為:

-(void) aMethod:(UIButton*) sender{
       //code
    }

我仍然得到一個錯誤。 如何通過選擇器傳遞按鈕?

我不太明白你在問什么,但 ID 是任意 object 代表其他一些 object (想想動態類型?)。 不要將選擇器方法上的數據類型從 ID 更改為其他任何內容。

如果它是由 UIButtons 觸發的方法,那么您可以像這樣訪問該按鈕:

-(void) aMethod:(id)sender {
UIButton *pressedButton = (UIButton *)sender;
}

現在您有了 UIButton object 用於觸發選擇器方法被觸發的任何按鈕。

一種判斷哪個按鈕觸發了選擇器的方法,給他們標簽,然后檢查你的aMethod:中的標簽。 使用上面的代碼將指針指向按鈕 object 后,您將可以訪問pressedButton.tag

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM