如何阻止子视图的didSelectRowAtIndexPath?

时间:2013-08-02 07:08:24

标签: ios iphone objective-c uitableview

在我的tableview中,我使用了包含复选框的自定义单元格。在自定义单元格类中添加复选框的代码是:

checkbox = [[SSCheckBoxView alloc] initWithFrame:CGRectMake(0, 20, 20, 20)
                                                    style:kSSCheckBoxViewStyleGlossy
                                                  checked:NO];
[self addSubview:checkbox];

我的问题是每当我点击复选框时它都会调用didSelectRowAtIndexPath。如何阻止这个?

2 个答案:

答案 0 :(得分:4)

您必须添加UIButton或将复选框设为按钮,然后在addsubviewUITabelViewCell。这将覆盖didSelectRowAtIndexPath方法本身,按钮单击将使您的操作成为可能。同时使按钮的尺寸更大一些,以便可点击区域合理。希望这会有所帮助。

编辑:

所以,如果你想这样做,我有办法在复选框方法中添加一个bool值IsChecked = YES。然后,当调用didSelectRowAtIndexPath方法时,在其中添加

- (void)tableView:(UITableView *)tableView didSelectRowAtIndexPath:(NSIndexPath *)indexPath
   {

       if(IsChecked == NO)
       { 
         Ischecked = NO; 
         // Add your methods 
       }
    }

希望你得到它......

答案 1 :(得分:3)

您可以通过为索引路径返回nil来停止选择。使用以下代码。

-(NSIndexPath *)tableView:(UITableView *)tableView willSelectRowAtIndexPath:(NSIndexPath *)indexPath{
    return nil;
}