如何在@selector方法中将int作为参数传递

时间:2014-02-25 03:00:18

标签: ios objective-c

有什么方法可以将简单的整数参数传递给@selector方法。请分享您可以尝试的一个班轮代码。我尝试过使用发送方和标记,但是没有按预期工作,相反,我更愿意将int值作为参数传递并在方法调用中收集。

我只想将此整数值传递给按钮操作上调用的函数,我不想使用发件人ID等。任何其他方法请告诉我。

static int i=1;
[button addTarget:self
           action:@selector(removeTextField:) 
 forControlEvents:UIControlEventTouchDown];

3 个答案:

答案 0 :(得分:2)

我假设你想要一种方法来跟踪点击了哪个按钮。在这种情况下,最简单的方法是将按钮的标记设置为整数:

button.tag = 1;
[button addTarget:self action:@selector(removeTextField:) forControlEvents:UIControlEventTouchDown];

然后通过发件人检索标记:

-(IBAction) removeTextField:(id)sender 
{
    UIButton *button = (UIButton *) sender;
    NSLog(@"%d",button.tag); // an NSInteger
}

还有其他的解决方法,例如子类化UIButton,但它们大多需要大量的工作。

答案 1 :(得分:0)

您无法通过选择器传递参数。但是,您可以创建INT作为类属性,并从类中的任何方法访问它。这意味着您可以使用与选择器相同的方法设置它,然后在选择器指向的方法中访问它。

或者,您可以将按钮的标记设置为您需要的值,并将其作为您的int传递,但这可能不是最好的方法。

答案 2 :(得分:-1)

您应该将int转换为NSUInteger或NSNumber。

 NSNumber* iParam = [NSNumber numberWithInt:i];

获取int值:

int i = [iParam intValue];