2012-03-15 92 views
0

我有一個方法:帶參數調用選擇

-(void)pickTheQuiz:(id)sender etat:(int)etatQuiz{ 
    //i need to get the etatQuiz value here  


} 
在我的代碼

和地方,我調用上面的方法是這樣的:

int etat_quiz=4; 
[button addTarget:self action:@selector(pickTheQuiz:etat:)withObject:etat_quiz forControlEvents:UIControlEventTouchUpInside]; 

在這樣做時,我得到錯誤:

Receiver type UIButton for instance message does not declare a method with selector 'addTarget:action:withObject:forControlEvent 

編輯:

-(void)pickTheQuiz:(id)sender etat:(int)etatQuiz{ 


    NSLog(@"The part number is:%i",((UIControl*)sender).tag); 

} 

回答

3

你不能像這樣傳遞參數。而不是你可以設置「etatQuiz」作爲你的標籤你的按鈕。並可以在你的選擇器中訪問它。 例如:

button.tag = etatQuiz; 
[button addTarget:self action:@selector(pickTheQuiz:) forControlEvents:UIControlEventTouchUpInside]; 


-(void)pickTheQuiz:(UIButton *)sender { 
    int value = sender.tag; 


} 
+0

如果我想傳遞多個信息?例如2個標籤。 thnx提前。 – Luca 2012-03-15 09:13:25

+0

請參閱http://stackoverflow.com/questions/3716633/passing-parameters-on-button-actionselector此鏈接 – Sree 2012-03-15 09:19:10

0

最簡單的解決方案是將整數變量作爲按鈕的tag屬性添加。然後,您可以使用((UIButton *) sender).tag來檢索它;

button.tag = 4; 
[button addTarget:self action:@selector(pickTheQuiz:) forControlEvents:UIControlEventTouchUpInside]; 

然後在pickTheQuiz:方法:

int etatQuiz = ((UIButton *) sender).tag; 
2

您使用addTarget錯了,你應該做的:

addTarget:self action:@selector(pickTheQuiz:) forControlEvents:(UIControlEventTouchUpInside) 

而在按鈕的標籤添加變量,例如

+0

我預計':'編譯時使用你的解決方案,爲什麼使用'::'? – Luca 2012-03-15 09:01:23