简而言之,我需要恢复backgroundView
单元格的默认UITableViewStyleGrouped
。
cell.backgroundView = ??;
长篇故事: 我有一些分组的tableview和一些单元格。对于每个单元格,用户需要选择一些值或进行一些输入。之后,他可以通过触摸“下一步”按钮继续下一个ViewController。
无论如何,为了向用户表明他错过了某些东西,我在单元格周围显示一个漂亮的红色边框,错误/缺少用户输入。我通过使用这样的自定义图像设置单元格的backgroudView
来实现这一点:
cell.backgroundView = myErrorIndicatingImageView;
单元格现在看起来像这样(截图,忽略星星和标签)
到目前为止这么好,这就像一个魅力。但在用户更正输入后,我想删除红色边框背景图像,然后再次显示原始背景。原始背景看起来像这样(截图):
这似乎是一个问题。
我尝试了几件事
// try by setting the background to nil
cell.backgroundView = nil;
这完全消除了背景,我迷失了没有背景的细胞。
// try it with addSubview and later remove the subview again
[cell.backgroundView addSubview:myErrorIndicatingImageView];
这没有任何作用。 myErrorIndicatingImageView
不可见。即使是[cell.backgroundView bringSubviewToFront:myErrorIndicatingImageView]
也无济于事。
现在我唯一的解决方案就是为UITableViewCell
的每次调用创建一个新的cellForRowAtIndexPath
。这有效,但只是错误的代码,完全忽略了重用单元格的技术。
必须有一个更简单的解决方案......比如
cell.backgroundView = [self.tableView getDefaultBackgroundView];
答案 0 :(得分:0)
尝试这个:
cell.backgroundView = [[UIView alloc] initWithFrame:cell.backgroundView.frame];
或者您可以将背景视图设为UIImageView
并在问题中设置2个图像并修复
答案 1 :(得分:0)
假设您使用自定义表格单元格类进行此操作,请将原始backgroundView
保存在某些ivar中,然后应用新背景。如果要重置背景,请将backgroundView
设置回原始保存的背景视图。