0

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

画像は、私が達成したいことを示しており、既存のものではありません。

ここに画像の説明を入力してくださいここに画像の説明を入力してください

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 に答える