是否可以区分uitableview中哪一行被点击?
- (void)tableView:(UITableView *)tableView didSelectRowAtIndexPath:(NSIndexPath *)indexPath
{
//which side of row has been detected left or right
}
答案 0 :(得分:7)
您可以继承UITableViewCell。在您的子类中,您可以创建一个iVar wasTouchOnLeft
。然后覆盖touchesBegan
或touchesEnded
,如下例所示:
-(void)touchesEnded:(NSSet *)touches withEvent:(UIEvent *)event{
UITouch *touch=(UITouch *)[touches anyObject];
if([touch locationInView:self].x< (0.5 * self.frame.size.width) )
{
NSLog(@"Touched Left");
wasTouchOnLeft=YES;
}
else {
NSLog(@"Touched Right");
wasTouchOnLeft=NO;
}
[super touchesEnded:touches withEvent:event];
}
在didSelectRowAtIndexPath
的{{1}}中,您可以访问该单元格的UITableViewController
变量。
答案 1 :(得分:1)
您无法在此方法中直接确定此内容。 但是,如果您真的想要此功能,请创建一个自定义的tableview单元格,该单元格有两个大按钮(一个在左侧一个)或在单元格上应用触摸识别器。
如果您将此操作委托给您的控制器 (您也可以将其存储在单元格中并通过其访问)
- (void)tableView:(UITableView *)tableView didSelectRowAtIndexPath:(NSIndexPath *)indexPath
{
if(((YourCustomTableCell*)[tableView cellForRowAtIndexPath:indexPath]).clickedSideProperty) action;
else anotherAction;
}
但是更好地从表格单元格委托它,而不是从didSelectRow ...
访问它