我有一个在查看模式和编辑模式之间来回翻转的表格视图。我有一个单元格,我想在视图模式下透明,在编辑模式下看起来像一个“普通”单元格(即白色背景,圆角矩形轮廓)。基本上,当你切换到&时,你会在联系人应用程序中看到名称单元格所做的事情。超出编辑模式。
我使用How to create a UITableViewCell with a transparent background中的解决方案来获得透明背景,但我无法弄清楚如何恢复原始背景。
目前,我在viewDidLoad中创建了两个背景视图:
nameCellDefaultBackview = [[UIView alloc] initWithFrame:CGRectZero];
nameCellDefaultBackview.backgroundColor = [UIColor clearColor];
nameCellEditBackview = [[UIView alloc] initWithFrame:CGRectZero];
nameCellEditBackview.backgroundColor = [UIColor whiteColor];
然后我给我的单元格默认背景视图:
nameCell.backgroundView = nameCellDefaultBackview;
在setEditing中:动画:我根据编辑模式设置单元格的背景:
if (editing) {
nameCell.backgroundView = nameCellEditBackview;
} else {
nameCell.backgroundView = nameCellDefaultBackview;
}
问题是,在编辑模式下,我得到一个白色矩形,而不是看起来像一个单元格 - 这正是我要求的,但不是我想要的:)。我已经尝试了其他一些东西,比如将backgroundView设置为nil(似乎=没有变化),并在viewDidLoad中保存“初始”背景视图(这似乎不起作用,并在调试器中查找变量我尝试将其分配给setEditing中的单元格时为0x0)。
所以我想要的是在正常模式下看起来像这样:
在编辑模式中这样:
但我当前进入编辑模式的是:
那么如何让白色背景/边框/圆角回来?
答案 0 :(得分:0)
如果要在编辑模式下使用原始单元格,则应考虑显示和隐藏单元格,而不是设置背景视图。背景视图作为子视图添加到所有其他视图后面,因此,将其设置为透明无效。参考:Apple Doc。
要隐藏或显示表格单元格,请参阅此post
答案 1 :(得分:0)
对于编辑模式,不要设置backgroundView。进入编辑模式时,只需拨打[tableView reloadData]
,然后像cellForRowAtIndexPath
一样设置backgroundView:
if (!editing) {
nameCell.backgroundView = nameCellDefaultBackview;
}
//if it is editing, then it will take the default style.
希望这会有所帮助。
答案 2 :(得分:0)
我决定改变一下我的方法,现在正在运作:
我现在有两个单元格,而不是试图显示/隐藏一个单元格的背景:
IBOutlet UITableViewCell *nameCellViewMode;
IBOutlet UITableViewCell *nameCellEditMode;
在viewDidLoad中:我更改了nameCellViewMode的背景以使其透明:
UIView *clearBackgroundView = [[UIView alloc] initWithFrame:CGRectZero];
clearBackgroundView.backgroundColor = [UIColor clearColor];
nameCellViewMode.backgroundView = clearBackgroundView;
在接下来的KDaker建议中,我现在只需在setEditing:animated:中执行tableView reloadData,然后在cellForRowAtIndexPath中执行此操作:
if (self.editing)
{
return nameCellEditMode;
}
else
{
return nameCellViewMode;
}