我正在使用拖放行为在tableView中添加新元素。当我使用
[tableView indexPathForRowAtPoint:CGPointMake(point.x-tableView.frame.origin.x, point.y-tableView.frame.origin.y+tableView.contentOffset.y)].section // point is an CGPoint instance
一切正常。但是,当我将鼠标悬停在空节标题视图下时,会得到上一个节号。这种方法行不通。所以我试图在headerView中从
CGRectContainsPoint
捕获事件,但是我没有成功,因为我无法从当前视图中获取节号。我试图根据部分设置标签if (CGRectContainsPoint(CGRectMake([tableView viewWithTag:i+1].frame.origin.x + tableView.frame.origin.x, [tableView viewWithTag:i+1].frame.origin.y, tableView.frame.size.width, tableView.frame.size.height), CGPointMake(point.x, point.y + tableView.contentOffset.y))) {
[tableView viewWithTag:i+1].backgroundColor = [UIColor redColor];
}
但是这种方法具有疯狂的行为,与实际位置无关。我觉得自己有点弱智,感谢您的帮助。
顺便说一句:我知道,如果我在空白部分添加虚拟单元格,该问题将消失,但是由于相关问题,我无法做到这一点。抱歉英语不好;)
最佳答案
使用以下代码,它将为您提供indexpath,就像您选择tableviewcell时的操作方式一样。
-(UITableViewCell *)cellForReuseIdentiFier:(NSString*)identifier andindex:(NSIndexPath*)indexPath
{
UITableViewCell *cell = [[UITableViewCell alloc]initWithStyle:UITableViewCellStyleDefault reuseIdentifier:identifier];
cell.backgroundColor = [UIColor clearColor];
cell.selectionStyle = UITableViewCellSelectionStyleNone;
UIButton *circleBtn = [UIButton buttonWithType:UIButtonTypeCustom];
[circleBtn addTarget:self action:@selector(selectSongAction:) forControlEvents:UIControlEventTouchUpInside];
[circleBtn setTag:Selection_Tag];
[circleBtn setBackgroundImage:[UIImage imageNamed:@"Demo03.png"] forState:UIControlStateNormal];
[circleBtn setFrame:CGRectMake(6, 15, 16, 16)];
[cell.contentView addSubview:circleBtn];
return cell;
}
-(void)selectSongAction:(id)sender
{
CGPoint btnPostion = [sender convertPoint:CGPointZero toView:songTable];
NSIndexPath *indexPath = [songTable indexPathForRowAtPoint:btnPostion];
}
关于iphone - 如果节为空,有什么适当的方法可以从CGPoint确定表中的节号?,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/9579712/