敲击后,Tableview单元格分隔线消失

时间:2014-11-25 01:38:14

标签: ios objective-c uitableview

我有UITableView个自定义tableview单元格,每个单元格之间有分隔线。我最近在编辑模式下开始实现多单元格选择。为了在选择每个单元格时使用蓝色圆圈复选标记,我将单元格selectionStyleUITableViewCellSelectionStyleNone更改为UITableViewCellSelectionStyleDefault。为了在选择单元格时摆脱灰色阴影,我刚刚实现了这样的白色背景:

UIView * cellBackgroundView = [[UIView alloc] initWithFrame:cell.frame];
cellBackgroundView.backgroundColor = [UIColor clearColor];
cell.multipleSelectionBackgroundView = cellBackgroundView;
cell.selectedBackgroundView = cellBackgroundView;

问题在于,当我没有处于编辑模式时,只要选择了单元格,分隔线就会消失,但是当我在编辑模式中选择单元格时,该行仍然存在。知道如何解决这个问题,以便始终保留分隔符吗?

2 个答案:

答案 0 :(得分:0)

尝试以下:

添加此行

[tableView deselectRowAtIndexPath:indexPath animated:YES];
[tableView reloadRowsAtIndexPaths:@[indexPath]
                 withRowAnimation:UITableViewRowAnimationAutomatic];

在didSelectRowAtIndexPath

的开头

这是自iOS7.0以来存在的奇怪错误

答案 1 :(得分:0)

我知道细胞分离器消失是一个常见的问题,但目前的解决方案似乎都没有解决我的问题所以我得出的结论是,当我的{{UITableViewCellSelectionStyleNone时,我需要将我的selectionStyle切换到tableView我处于编辑模式时,1}}未处于编辑模式和UITableViewCellSelectionStyleBlue。我能够通过在包含我的表视图的视图控制器中调用以下内容来实现此目的:

- (NSIndexPath *)tableView:(UITableView *)tableView willSelectRowAtIndexPath:(NSIndexPath *)indexPath {

    if(tableView.editing)
    {
        [((customTableViewCellClass*)[tableView cellForRowAtIndexPath:indexPath]) changeSelectionStyle:YES];
    }
    else
    {
        [((customTableViewCellClass*)[tableView cellForRowAtIndexPath:indexPath]) changeSelectionStyle:NO];
    }

return indexPath;
}

然后在我的自定义tableviewcell课程中,我呼叫以下内容:

-(void) changeSelectionStyle: (BOOL) selected
{
    if(selected)
    {
        self.selectionStyle = UITableViewCellSelectionStyleBlue;
    }
    else
    {
        self.selectionStyle = UITableViewCellSelectionStyleNone;
    }

}

cellForRowAtIndexPath中,我留下了更改multipleSelectionBackgroundView

视图的代码
- (UITableViewCell *)tableView:(UITableView *)tableView cellForRowAtIndexPath:(NSIndexPath *)indexPath
{
    UIView * cellBackgroundView = [[UIView alloc] initWithFrame:cell.frame];
    cellBackgroundView.backgroundColor = [UIColor clearColor];
    cell.multipleSelectionBackgroundView = cellBackgroundView;
    cell.selectedBackgroundView = cellBackgroundView;
}