当按下TableView单元格中的按钮时,我怎么知道按下了哪一行单元格按钮?
问题描述:
我有一个自定义TableView单元格,并在那里有一个按钮。 表视图有许多行使用相同的自定义单元格。 现在如果其中一个单元格的按钮被按下。我想知道按钮在哪一行的单元格? (1)当按下TableView单元格中的按钮时,我怎么知道按下了哪一行单元格按钮?
答
(1)。在这种方法cellForRowAtIndexPath:
,分配按钮与tag
。 例如:
cell.yourbutton.tag = indexPath.row;
(2)。使用相同的选择器添加动作按钮
[cell.yourbutton addTarget:self action:@selector(cellButtonClicked:) forControlEvents:UIControlEventTouchUpInside];
(3)。然后
-(void)cellButtonClicked:(UIButton*)sender
{
NSIndexPath *path = [NSIndexPath indexPathForRow:sender.tag inSection:0];
}
答
您可以定义自定义属性,你可以用它象下面这样: -
#define kCustomProperty @"CustomProperty"
助理与自定义属性的对象像下面
objc_setAssociatedObject(yourButton,kCustomProperty , yourCellIndexPath, OBJC_ASSOCIATION_RETAIN_NONATOMIC);
使用让您的数据像下面一样的属性和对象
NSIndexPath *yourCellIndexPath = (NSIndexPath *)objc_getAssociatedObject(yourButton, kCustomProperty);
如果您不想使用标签,则可以通过编码创建一种自定义属性。
您可以将按钮的标签属性设置为行索引。 – 0x141E 2014-10-11 07:45:55
http://stackoverflow.com/questions/11936126/how-to-pass-uitableview-indexpath-to-uibutton-selector-by-parameters-in-ios/11936294#11936294 – TheTiger 2014-12-17 11:43:37