恢复默认的UITableViewCell backgroundView

时间:2013-02-23 11:13:32

标签: ios uitableview

简而言之,我需要恢复backgroundView单元格的默认UITableViewStyleGrouped

cell.backgroundView = ??;

长篇故事: 我有一些分组的tableview和一些单元格。对于每个单元格,用户需要选择一些值或进行一些输入。之后,他可以通过触摸“下一步”按钮继续下一个ViewController。

无论如何,为了向用户表明他错过了某些东西,我在单元格周围显示一个漂亮的红色边框,错误/缺少用户输入。我通过使用这样的自定义图像设置单元格的backgroudView来实现这一点:

cell.backgroundView = myErrorIndicatingImageView;

单元格现在看起来像这样(截图,忽略星星和标签) enter image description here

到目前为止这么好,这就像一个魅力。但在用户更正输入后,我想删除红色边框背景图像,然后再次显示原始背景。原始背景看起来像这样(截图): enter image description here

这似乎是一个问题。

我尝试了几件事

// 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];

2 个答案:

答案 0 :(得分:0)

尝试这个:

cell.backgroundView = [[UIView alloc] initWithFrame:cell.backgroundView.frame];

或者您可以将背景视图设为UIImageView并在问题中设置2个图像并修复

答案 1 :(得分:0)

假设您使用自定义表格单元格类进行此操作,请将原始backgroundView保存在某些ivar中,然后应用新背景。如果要重置背景,请将backgroundView设置回原始保存的背景视图。