1

我在 RootViewController 中有一个 UITableView ,当点击一个单元格时,我希望它有颜色,但一次只能启用一个。

我很难说“如果 CGRect 不包含抽头”。

.m

- (void)changeColour:(UITapGestureRecognizer *)tap
{
    if (UIGestureRecognizerStateEnded == tap.state) {
        UITableView *tableView = (UITableView *)tap.view;
        CGPoint p = [tap locationInView:tap.view];
        NSIndexPath* indexPath = [tableView indexPathForRowAtPoint:p];
        UITableViewCell *cell = [tableView cellForRowAtIndexPath:indexPath];
        CGPoint pointInCell = [tap locationInView:cell];
        if (CGRectContainsPoint(cell.frame, p)) {
            UIView* view1 = [[UIView alloc] init];
                       view1.backgroundColor = [UIColor redColor];
                       [cell setBackgroundView:view1];

        } else  {
                       UIView* view1 = [[UIView alloc] init];
                       view1.backgroundColor = [UIColor whiteColor];
                       [cell setBackgroundView:view1];
        }
    }
}
4

1 回答 1

1

更好的方法是不使用手势......

使用 TableView 委托方法...

要使用它,请确保您已将代表分配给您的 tableview..

- (void)tableView:(UITableView *)tableView didSelectRowAtIndexPath:(NSIndexPath *)indexPath
{
    UITableViewCell *cell = [tableView cellForRowAtIndexPath:indexPath];
    UIView* view1 = [[UIView alloc] init];
    view1.backgroundColor = [UIColor redColor];
    [cell setBackgroundView:view1];
    [view1 release];//for NON ARC ONLY
}

-(void)tableView:(UITableView *)tableView didDeselectRowAtIndexPath:(NSIndexPath *)indexPath
{
    UITableViewCell *cell = [tableView cellForRowAtIndexPath:indexPath];
    UIView* view1 = [[UIView alloc] init];
    view1.backgroundColor = [UIColor whiteColor];
    [cell setBackgroundView:view1];
    [view1 release];//for NON ARC ONLY
}

这肯定会帮助你

享受编码......

于 2013-06-15T11:12:54.643 回答