2011-08-12 69 views
0

here中有類似的問題,但由於某些原因,我無法使其工作。通過選擇器傳遞參數

我創建了很多按鈕,所以我使用代碼動態創建它們。所以下面的代碼創建一個按鈕上touchdouwn它執行時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 
    } 

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

+1

鏈接不起作用。你遇到了什麼錯誤? – ColdLogic

+0

對不起,我修復鏈接 –

+0

可能的重複[如何將參數傳遞給選擇器?](http://stackoverflow.com/questions/4372468/how-can-i-pass-a-parameter-to-a - 選擇器) –

回答

1

我不太明白你在問什麼,但ID是代表其他對象的任意對象(認爲動態類型?)。不要將選擇器方法的數據類型從ID更改爲其他任何內容。

如果它是由UIButtons發射的方法,那麼你訪問按鈕這樣的:

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

現在你有UIButton的對象不管是什麼按鈕觸發被解僱的選擇方法。

一種方法告訴哪個按鈕觸發選擇器,給他們標籤,然後檢查aMethod:中的標籤。使用上面的代碼製作指向按鈕對象的指針後,您將有權訪問pressedButton.tag