IOS - uitableviewcell,点击单元格内的UIImageView,但是停止didSelectRowAtI



我有一个自定义单元格,当你点击自定义单元格时,另一个视图出现,但在这个自定义单元格中,我有一个标志ImageView。我需要做的是,如果Flag ImageView被选中,不要去didSelectRowAtIndexPath,因为我需要改变Flag ImageView为一个红旗,并在Flag ImageView被点击时阻止视图出现。和Javascript一样,stopPropagation()在IOS中是否有办法使用自定义单元格?

您需要将userinteraction设置为启用是。设置

cell.imageView.userInteractionEnabled = YES;
那么它就不会调用tableview的didselect方法

如果你在单元格中有UIImageView你就不能直接停止它。除了UIImageView,你可以使用自定义单元格并取UIButton。这将允许您在didSelectRowAtIndexPath中解决问题。

当我们点击UIButton时它会给Button优先级高于UITableViewCell Row。如果这对你不起作用,那么请提供您的反馈,我将尽快解决您的问题。

为标志使用UIButton。为这个按钮创建一个IBOutlet并将背景设置为你想要的任何东西。

在interface builder中,你需要为你的按钮分配一个标签编号,然后在Tableview cellForRowAtIndexPath中实例化它,就像这样。

    UIButton *favs = (UIButton *)[cell viewWithTag:105];

然后在cellForRowAtIndexPath方法中为按钮实现一个目标操作,例如:

[favs addTarget:self action:@selector(checkButtonTapped:event:) forControlEvents:UIControlEventTouchUpInside];

然后在触摸事件中为你的checkbuttontap实现一个方法,如:

    - (void)checkButtonTapped:(id)sender event:(id)event{
    //Create touch set
    UITouch *touch = [[event allTouches] anyObject];
    //Get Current touch position
    CGPoint currentTouchPosition = [touch locationInView:self.tableView];
    //Get IndexPath
    NSIndexPath *indexPath = [self.tableView indexPathForRowAtPoint: currentTouchPosition];
}

然后使用indexPath从触摸点将Unbutton的背景更改为红旗。

相关内容

最新更新