addTarget:action:forControlEvents:来自UITableViewCell

时间:2011-12-12 18:15:15

标签: iphone

我有一个带有3个复选标记按钮的UITableViewCell。每个复选标记按钮都是自定义UIButton(只是图像真的),并在自定义UITableViewCell子类中有一个插座。在cellForRowAtIndexPath方法中,我

[cell.firstcheckmark addTarget:self action:@selector(checkmarkPressed:) forControlEvents:UIControlEventTouchUpInside];
[cell.secondcheckmark addTarget:self action:@selector(checkmarkPressed:) forControlEvents:UIControlEventTouchUpInside];
[cell.thirdcheckmark addTarget:self action:@selector(checkmarkPressed:) forControlEvents:UIControlEventTouchUpInside];

- (void)checkmarkPressed:(id)sender {
   // how do I get which checkmark was pressed?
}

我不知道如何从发件人对象中获取按钮。其他时候我可以使用按钮的标题,但在这种情况下,除了它们的插座外,所有按钮都是相同的。如何获得按下哪个按钮?或者他们每个人都需要调用不同的方法,然后在这三种方法中的每一种中,我都可以通过从这三种方法中的每一种调用相同的modelUpdateMethod来更新我的模型?感谢。

2 个答案:

答案 0 :(得分:2)

您可以通过标记识别它们:

cell.firstcheckmark.tag = 0;

然后

- (void)checkmarkPressed:(id)sender {

   UIButton *button = (UIButton*)sender;

   if(button.tag == 0)
   {
      ...
   }
   ...
}

答案 1 :(得分:0)

我认为你也可以使用:

UITableViewCell *cell = (UITableViewCell *)[[sender superview] superview];

它可以获得按钮所在的单元格。