我正在使用自定义单元格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];
}
}
}
答案 0 :(得分:1)
"滞后"是因为单元格处于选定状态时发生的变化。如果你仔细观察电影的第二个1.5,你可以看到红色矩形在之前已经消失了我们甚至离开了桌面视图。
因此,事件的顺序是:
用户点击单元格并选中它。红色矩形消失了!
显示新的视图控制器。
弹出呈现的视图控制器,我们返回到表视图,并且仍然选择了单元格。选择单元格时,红色矩形仍然不可见。然后,在表视图控制器故意施加延迟之后,取消选择单元格 - 再次出现红色矩形!
基本上你是在打脸(隐藏红色矩形),然后抱怨你的脸被击中了。如果你不喜欢被击中,不要自己打![/ p>
您有两种选择:
修复红色矩形,使其即使在选中或突出显示时也是一个红色矩形 。我无法准确地告诉你如何做到这一点,因为你隐瞒了事实,没有透露任何关于这个红色矩形是什么,如何配置等等。
或者,将表格视图控制器的clearsSelectionOnViewWillAppear
设置为YES。这将导致取消选择更快地发生。然而,这是懒人的方式;选择/突出显示红色矩形消失的原因会更好。
答案 1 :(得分:0)
根据@matt的帮助,我正确设置了单元格的选择样式:
cell.selectionStyle = UITableViewCellSelectionStyleNone;