3

所以我想要我的 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];
4

2 回答 2

1

您可以通过情节提要或 XIB 文件设置按钮的目标和操作。更有趣的问题是让您弄清楚您的按钮是从哪个表格单元格按下的。

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

于 2013-05-15T17:29:06.013 回答
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 框架,因为它可以更轻松地处理带有按钮的此类自定义单元格。在过去的几个月里,我自己节省了大量时间。

于 2013-05-16T03:59:02.087 回答