处理原型UITableViewCell中的操作

时间:2015-03-03 15:30:24

标签: objective-c xcode uitableview tableviewcell

我有一个带有3个按钮的原型UITableViewCell,我将调用button1,button2和button3。

比如说我将2个项目的数组加载到我的UITableView中,因此这个原型UITableViewCell的2个实例,每个都有3个按钮;如何处理这些按钮的操作并确定在哪一行上点击了哪个按钮。

Here is a screenshot of the prototype cell I am using.

更新

使用下面的代码,行总是0 ...任何想法?

ParentDashboardChildTableViewCell *cell = (ParentDashboardChildTableViewCell *)[sender superview].superview;
    NSIndexPath *indexPath = [self.overviewTableView indexPathForCell:cell];
    NSLog(@"selected tableview row is %ld", (long)indexPath.row);

2 个答案:

答案 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,但是有一个等效的表视图方法。