0

我有一个 UITableView。我在 tableview 旁边有一个像箭头一样的图像。

我必须检查箭头是否与特定单元格相交,以便我可以以编程方式选择该单元格。我该怎么做呢?

我在单元格/行的选择类型方面没有问题,但在检测箭头是否在特定行上时遇到问题。

我已经写了这段代码但没有工作:

NSArray *paths = [tableView indexPathsForVisibleRows];

for (NSIndexPath *path in paths)
{
    CGRect myRect = [tableView rectForRowAtIndexPath:indexPath];
    CGRect myRect1 = CGRectMake(-12, 234, 55, 52);
    
    if (CGRectIntersectsRect(myRect1, myRect))
    {
        // Also tried [tableView selectRowAtIndexPath:[NSIndexPath indexPathForRow:0 inSection:0] animated:NO scrollPosition:UITableViewScrollPositionNone];
        cell.selected = YES;
        NSLog(@"\n \n \n myrect = %@ myrect1 = %@ , index = %@ \n \n ", NSStringFromCGRect(myRect),NSStringFromCGRect(myRect1), indexPath);
    }
    else
    {
        cell.selected = NO;
    }
}

图像显示了我想要实现的目标,而不是现有的目标。

在此处输入图像描述在此处输入图像描述

4

2 回答 2

1

好的...对于箭头的问题...我认为表格正在将每一行的矩形返回到表格的框架中。所以我认为你需要这样做:

for (NSIndexPath *path in paths) 
{

    CGRect myRect = [tableView rectForRowAtIndexPath:indexPath];
    CGRect myRect1 = CGRectMake(-12, 234, 55, 52);

    myRect.origin.x += tableView.frame.origin.x;
    myRect.origin.y += tableView.frame.origin.y;

    if (CGRectIntersectsRect(myRect1, myRect)) 
    {
        //selection code here
    }
    else
    {
        // whatever you want
    }
}
于 2013-02-27T11:14:51.247 回答
0

我找到了答案.. 发布代码

- (void)scrollViewDidScroll:(UIScrollView *)aScrollView 
{

      NSArray *paths = [tableView indexPathsForVisibleRows];

      for (NSIndexPath *indexPath in paths) 
      {

          CGRect myRect = [tableView convertRect:[tableView rectForRowAtIndexPath:indexPath] toView:[tableView superview]];
          CGRect myRect1 = CGRectMake(-12, 236, 20, 30);

          if (CGRectIntersectsRect(myRect1, myRect) && notSelected == FALSE) 
          {

               notSelected = TRUE;
              [tableView selectRowAtIndexPath:indexPath animated:NO scrollPosition:UITableViewScrollPositionNone];

           }
           else
           {

                notSelected = FALSE;
                [tableView deselectRowAtIndexPath:indexPath animated:NO];
            }
      }
}
于 2013-02-27T11:23:36.130 回答