2013-02-27 80 views
0

我有一個UITableView。我在tableview旁邊有一個像箭頭一樣的圖像。以編程方式選擇一個UITableViewCell,如果它包含cgrect

我必須檢查箭頭是否與特定單元格相交,以便我可以以編程方式選擇該單元格。我該怎麼做呢?

我沒有在單元格/行的選擇類型有問題,但有問題檢測箭頭是否在特定的行上。

我寫了這個代碼,但不工作:

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 hereenter image description here

+0

嘗試調用「didSelectRowAtIndexPath方法:」編程。 – George 2013-02-27 10:44:48

+0

做了..不起作用... – 2013-02-27 10:47:38

+0

可以請你顯示你在'didSelectRowAtIndexPath'中的代碼嗎?並且在那裏放置一個斷點以確保它被調用。 – George 2013-02-27 10:51:32

回答

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]; 
      } 
     } 
} 
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 
    } 
} 
+0

感謝喬治..我想我已經找到了答案..將記住,但如果有任何問題發生.. – 2013-02-27 11:25:41

相關問題