如果它包含cgrect,则以编程方式选择UITableViewCell

时间:2013-02-27 10:40:08

标签: ios uitableview

我有一个UITableView。我在桌面旁边有一个像箭头的图像。

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

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

我已编写此代码但未正常工作:

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;
    }
}

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

enter image description here enter image description here

2 个答案:

答案 0 :(得分:1)

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

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
    }
}

答案 1 :(得分: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];
            }
      }
}