在tableView单元格中添加按钮

时间:2013-05-15 17:26:22

标签: uitableview io uibutton

所以我想在tableView单元格中使用三个按钮。我已经制作了一个自定义单元格,因此我自定义了一次自定义单元格中的按钮,而不是在cellForRowAtIndexPath中一次又一次地执行此操作

但我想为所有三个按钮添加一个选择器,我正在使用

[cell.btn1 addTarget:self action:@selector(firstAction:) forControlEvents:UIControlEventTouchUpInside];

cellForRowAtIndexPath内。这是最好的方式吗?每次滚动我的单元格时,不会addTarget初始化并重新初始化自己?这不是一个额外的超负荷?有没有更好的方法做到这一点,我不知道?

修改

这就是我弄清楚按钮属于哪个单元格的方式

CGPoint buttonPosition = [sender convertPoint:CGPointZero toView:self.feedTableView];
NSIndexPath *indexPath = [self.feedTableView indexPathForRowAtPoint:buttonPosition];

2 个答案:

答案 0 :(得分:1)

您可以通过故事板或XIB文件设置按钮的目标和操作。更有趣的问题是你可以找出按下按钮的哪个表格单元格。

我建议对UIButton进行子类化,并为您的子类UIButton添加“row”或“indexPath”属性,您可以在表格中设置“cellForRowAtIndexPath”方法,并从中(“sender”)按下按钮后,您可以提取单击按钮的行,并调用您的操作。

答案 1 :(得分:0)

您可能应该在自定义单元格中创建一个委托,并在单击任何按钮时触发此委托。一些代码示例:

@protocol CustomCellDelegate
-(void)cell:(UITableViewCell *)cell buttonTapped:(UIButton) atIndexPath:(NSIndexPath *)indexPath;
@end

@interface CustomCell
property (weak) id<CustomCellDelegate> delegate;
@end

@implementation CustomCell
-(void)buttonTapped {
  // fire delegate here
}
@end

我还强烈建议您查看免费的Sensible TableView框架,因为它可以更轻松地处理这些带按钮的自定义单元格。在过去的几个月里,我自己用它节省了很多时间。