我正在使用拖放行为在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/

10-14 23:13