如何在@selector中传递参数?

时间:2011-06-05 12:10:33

标签: ios objective-c cocoa-touch arguments selector

如何在@selector中为我的代码传递参数?

[thisIconBtn addTarget:self action:@selector(changeIconState) forControlEvents:UIControlEventTouchUpInside];

-(void)changeIconState:(UITableViewCell*)thisCell
{
  //do something
}

3 个答案:

答案 0 :(得分:6)

首先,冒号是选择器的一部分:@selector(changeIconState:)

其次,操作是采用一组特定参数的方法 - 您不能仅使用任何方法作为操作。通常,操作如下所示:

- (void)myAction:(id)sender;

其中sender是指向发送操作的对象的指针。在您的代码中,当点击thisIconButton时,该按钮将作为发件人传递。

答案 1 :(得分:1)

如果你想要按钮所属的单元格,请使用button.superview.superview获取它,但我认为你不能改变控制事件的目标方法的参数。

答案 2 :(得分:0)

尝试通过选择器发送数据的最常见原因之一是在UITableViewCell中使用自定义按钮时。

Matthias Bauch通过在相关帖子中查找发件人的单元格,提供了一个关于如何获取indexPath的优秀代码示例。请参阅https://stackoverflow.com/a/5690329/654870