1

我有我的自定义 uitableviewcell。它有uibutton,带有动作的uibutton。那么我如何知道按下 uibutton 的行的 indexPath 呢?

目标:每行上的 uibuttons 都有一个图像。因此,当用户点击按钮时,它会显示警报视图,如果答案是“是”,则 uibutton 的图像会发生变化。

4

3 回答 3

3

试试下面的代码片段:

在 cellForRowAtIndexPath 方法中。将 indexpath.row 设置为按钮标签

[cellButton addTarget:self action:@selector(cellBottonClicked:) forControlEvents:UIControlEventTouchUpInside];
cellButton.tag = indexPath.row;

-(IBAction) cellBottonClicked:(id)sender{
    NSInteger row = [sender tag];
    //you can get indexpath from row
    NSIndexPath *indexPath = [NSIndexPath indexPathForRow:row inSection:0]; 
    CustomTableViewCell *cell = (CustomTableViewCell *)[self.tableView  cellForRowAtIndexPath:indexPath];
    // from this cell you can fetch and change image of selected cell's button. 
}

[编辑:仅更改按钮的图像]

如果您只需要在单击事件上更改按钮的图像。那么我认为,您不需要索引路径或单元格。

试试这个代码。希望它会有所帮助:

-(IBAction) cellBottonClicked:(id)sender{
   UIButton *btn = (UIButton *)sender;
   [btn setImage:yourImage forState:UIControlStateNormal];
 }
于 2012-09-04T18:01:10.833 回答
0

您还应该能够通过以下方式获取 indexPath:

NSIndexPath *indexPathForButton = [self.tableView indexPathForSelectedRow];

在您的 .h 文件中,添加:

@property (nonatomic, retain) NSIndexPath* indexPathForButton;

并在使用时更改 indexPath。(self.indexPathForButton = indexPath;)

但是使用标签要舒服得多……</p>

于 2012-09-04T15:55:21.183 回答
-1

您可以将当前单元格的行指定为 UIButton 的标记。在您的目标/操作上,您可以检查按钮的标签以找到按下它的行。

于 2012-09-04T15:50:54.517 回答