当我们持有UITableViewCell时将调用哪个方法

时间:2013-06-19 12:15:14

标签: iphone ios uitableview

当我们选择UITableViewCell而不是- (void)tableView:(UITableView *)tableView didSelectRowAtIndexPath:(NSIndexPath *)indexPath时。

但是如果我们持有UITebleViewCell,将调用哪个方法。伙计我的问题是我创建了一个包含大单元格的tableview,在那个单元格中我设置了各种视图的视图背景颜色。

当我选择单元格时,单元格的背景颜色将会消失。我已经通过像这样的didSelectRowAtIndexPath方法再次设置视图背景颜色来解决这个问题。

- (void)tableView:(UITableView *)tableView didSelectRowAtIndexPath:(NSIndexPath *)indexPath
{
    UITableViewCell *selectedCell = [tableView cellForRowAtIndexPath:indexPath];

    UIView *vLineview=[selectedCell viewWithTag:1];
    vLineview.backgroundColor = [UIColor colorWithRed:(89/255.0) green:(89/255.0) blue:(89/255.0) alpha:1];
}

这样就完成了技巧,我的视图背景颜色会显示出来,但是当我拿着UITableViewCell时它会再次显示。

我该如何解决这个问题?我是否必须和手势识别器检测长触摸并在其中实现我的视图背景方法?或者还有其他任何可用的方法。

4 个答案:

答案 0 :(得分:1)

在cellForRowAtIndexPath

中尝试使用set cell selection style none
[cell setSelectionStyle:UITableViewCellSelectionStyleNone];

答案 1 :(得分:0)

您可以继承UITableViewCell并覆盖此方法:

- (void) setSelected: (BOOL) selected
            animated: (BOOL) animated
{
    [super setSelected: selected
              animated: animated];

    // Configure the view for the selected state
}

答案 2 :(得分:0)

点击行后,UITableViewCell是否仍然被选中,这是一个问题吗?

如果不需要行选择,请务必在deselectRowAtIndexPath:animated方法结束时致电tableView:didSelectRowAtIndexPath

[tableView deselectRowAtIndexPath:indexPath animated:YES];

答案 3 :(得分:0)

请查看名为-(void)beginUpdates的方法
如果要同时对后续插入,删除和选择操作(例如,cellForRowAtIndexPath:和indexPathsForVisibleRows)进行动画处理,请调用此方法。 有关详细信息,请访问以下链接中的apple文档
UITableView Class Refrence

同时尝试[cell setSelectionStyle:UITableViewCellSelectionStyleNone];