我有我的自定义 uitableviewcell。它有uibutton,带有动作的uibutton。那么我如何知道按下 uibutton 的行的 indexPath 呢?
目标:每行上的 uibuttons 都有一个图像。因此,当用户点击按钮时,它会显示警报视图,如果答案是“是”,则 uibutton 的图像会发生变化。
我有我的自定义 uitableviewcell。它有uibutton,带有动作的uibutton。那么我如何知道按下 uibutton 的行的 indexPath 呢?
目标:每行上的 uibuttons 都有一个图像。因此,当用户点击按钮时,它会显示警报视图,如果答案是“是”,则 uibutton 的图像会发生变化。
试试下面的代码片段:
在 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];
}
您还应该能够通过以下方式获取 indexPath:
NSIndexPath *indexPathForButton = [self.tableView indexPathForSelectedRow];
或在您的 .h 文件中,添加:
@property (nonatomic, retain) NSIndexPath* indexPathForButton;
并在使用时更改 indexPath。(self.indexPathForButton = indexPath;)
但是使用标签要舒服得多……</p>
您可以将当前单元格的行指定为 UIButton 的标记。在您的目标/操作上,您可以检查按钮的标签以找到按下它的行。