用参数调用选择器

时间:2012-03-15 08:52:39

标签: objective-c ios

我有一个方法:

-(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 个答案:

答案 0 :(得分:3)

您无法像这样传递参数。您可以将“etatQuiz”设置为按钮的标记。并且可以在选择器中访问它。 例如:

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


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


}

答案 1 :(得分:2)

您使用addTarget错误,您应该这样做:

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

然后在按钮的标签中添加变量

答案 2 :(得分:0)

最简单的解决方案是将整数变量添加为按钮的tag属性。然后,您可以使用((UIButton *) sender).tag;

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

然后在pickTheQuiz:方法中:

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