我有一个带有3个按钮的原型UITableViewCell,我将调用button1,button2和button3。
比如说我将2个项目的数组加载到我的UITableView中,因此这个原型UITableViewCell的2个实例,每个都有3个按钮;如何处理这些按钮的操作并确定在哪一行上点击了哪个按钮。
更新
使用下面的代码,行总是0 ...任何想法?
ParentDashboardChildTableViewCell *cell = (ParentDashboardChildTableViewCell *)[sender superview].superview;
NSIndexPath *indexPath = [self.overviewTableView indexPathForCell:cell];
NSLog(@"selected tableview row is %ld", (long)indexPath.row);
答案 0 :(得分:1)
您可以为每个按钮使用标记。对于reference
为表格单元格上的三个按钮分配标记值。您可以使用以下格式分配标记值:00,01,02,以便o表示行号,1,2,3表示按钮。
NSString *tagString_for_Button1=[NSString stringwithformat:@"%d%d"indexPath.row,1];
NSString *tagString_for_Button2=[NSString stringwithformat:@"%d%d"indexPath.row,2];
NSString *tagString_for_Button3=[NSString stringwithformat:@"%d%d"indexPath.row,3];
cell.yourbutton1.tag = [tagString_for_Button1 integerValue];
cell.yourbutton2.tag = [tagString_for_Button2 integerValue];
cell.yourbutton3.tag = [tagString_for_Button3 integerValue];
将目标操作添加到按钮,如下所示:
[cell.yourbutton1 addTarget:self action:@selector(yourButtonClicked1:) forControlEvents:UIControlEventTouchUpInside];
[cell.yourbutton2 addTarget:self action:@selector(yourButtonClicked2:) forControlEvents:UIControlEventTouchUpInside];
[cell.yourbutton3 addTarget:self action:@selector(yourButtonClicked3:) forControlEvents:UIControlEventTouchUpInside];
and define the methods for those buttons based on index as follows:
-(void)yourButtonClicked:(UIButton*)sender
{
if (sender.tag == 0)
{
//Here your coding.
}
}
答案 1 :(得分:0)
假设您已将按钮的目标操作定义为名为“actionCellButtonClicked”的方法,那么您可以实现类似的方法
-(IBAction)actionCellButtonClicked:(id)sender {
CustomCollectionCell *cell = (CustomCollectionCell *) [sender superview];
NSIndexPath *indexPath = [self.collectionView indexPathForCell:cell];
// to do somthing
}
注意:[sender superview]它允许遍历包含按钮的视图层次结构。换句话说,你得到了细胞,而不是你可以获得细胞的索引。我使用了collectionView,但是有一个等效的表视图方法。