如何在@selector
中为我的代码传递参数?
[thisIconBtn addTarget:self action:@selector(changeIconState) forControlEvents:UIControlEventTouchUpInside];
-(void)changeIconState:(UITableViewCell*)thisCell
{
//do something
}
答案 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。