UITableView单元格不会快速更新

时间:2014-06-01 16:02:55

标签: uitableview pushviewcontroller

我正在使用自定义单元格UITableView。一个单元格导航到另一个UINavigationController。此单元格包含颜色标签。从新UIViewController返回到表格视图时,颜色标签滞后显示。

为了更好地理解,我制作了一个视频: http://youtu.be/zsWt97pxCu0

为什么这种奇怪的行为?我认为tableview存储它的状态。

我已实现tableView:cellForRowAtIndexPath:从NIB文件中取消单元格,并tableView:willDisplayCell:forRowAtIndexPath:填充红色标签。另外,我已经实现了以下过渡:

-(void) tableView:(UITableView *)tableView
didSelectRowAtIndexPath:(NSIndexPath *)indexPath
{
    if(indexPath.section == 1) {
        if(indexPath.row == 0) {
            UIViewController* ctrl = [[UIViewController alloc] init];
            ctrl.preferredContentSize = CGSizeMake(240, 200);
            [self.navigationController pushViewController: ctrl animated:YES];
        }
    }
}

2 个答案:

答案 0 :(得分:1)

"滞后"是因为单元格处于选定状态时发生的变化。如果你仔细观察电影的第二个1.5,你可以看到红色矩形在之前已经消失了我们甚至离开了桌面视图。

因此,事件的顺序是:

  1. 用户点击单元格并选中它。红色矩形消失了!

  2. 显示新的视图控制器。

  3. 弹出呈现的视图控制器,我们返回到表视图,并且仍然选择了单元格。选择单元格时,红色矩形仍然不可见。然后,在表视图控制器故意施加延迟之后,取消选择单元格 - 再次出现红色矩形!

  4. 基本上你是在打脸(隐藏红色矩形),然后抱怨你的脸被击中了。如果你不喜欢被击中,不要自己打![/ p>

    您有两种选择:

    • 修复红色矩形,使其即使在选中或突出显示时也是一个红色矩形 。我无法准确地告诉你如何做到这一点,因为你隐瞒了事实,没有透露任何关于这个红色矩形是什么,如何配置等等。

    • 或者,将表格视图控制器的clearsSelectionOnViewWillAppear设置为YES。这将导致取消选择更快地发生。然而,这是懒人的方式;选择/突出显示红色矩形消失的原因会更好。

答案 1 :(得分:0)

根据@matt的帮助,我正确设置了单元格的选择样式:

cell.selectionStyle = UITableViewCellSelectionStyleNone;