我有一个自定义单元格,当你点击自定义单元格时,另一个视图出现,但在这个自定义单元格中,我有一个标志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的背景更改为红旗。