当按下TableView单元格中的按钮时,我怎么知道按下了哪一行单元格按钮?

问题描述:

我有一个自定义TableView单元格,并在那里有一个按钮。 表视图有许多行使用相同的自定义单元格。 现在如果其中一个单元格的按钮被按下。我想知道按钮在哪一行的单元格? (1)当按下TableView单元格中的按钮时,我怎么知道按下了哪一行单元格按钮?

+0

您可以将按钮的标签属性设置为行索引。 – 0x141E 2014-10-11 07:45:55

+0

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

(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]; 
} 
+0

提问者需要行号而不是按钮索引,只是修改你的答案 – 2014-10-11 07:47:57

+0

如果我做一个custome单元格,并在代码中设置按钮标记,单元格的不同行中的按钮标记是否具有相同的按钮标记或不同? – leizh007 2014-10-11 08:28:27

+0

应该不同。您可以使用它来确定单击哪个按钮。 – Leo 2014-10-11 08:43:16

您可以定义自定义属性,你可以用它象下面这样: -

#define kCustomProperty @"CustomProperty" 

助理与自定义属性的对象像下面

objc_setAssociatedObject(yourButton,kCustomProperty , yourCellIndexPath, OBJC_ASSOCIATION_RETAIN_NONATOMIC); 

使用让您的数据像下面一样的属性和对象

NSIndexPath *yourCellIndexPath = (NSIndexPath *)objc_getAssociatedObject(yourButton, kCustomProperty); 

如果您不想使用标签,则可以通过编码创建一种自定义属性。