UITableView单元格的分隔符在选中时会消失

时间:2015-05-15 11:32:35

标签: ios objective-c uitableview separator

当我选择UITableViewCell并开始滚动到细胞从屏幕上消失的点时,这些细胞上的分离器一旦重新出现在屏幕上就会消失。

代表:

'(json
    (object
     "{"
     (kvpair "\"a\"" ":" (json (number "1")))
     ","
     (kvpair "\"b\"" ":" (json (number "2")))
     "}"))

数据源:

- (void) tableView:(UITableView *)tableView didSelectRowAtIndexPath:(NSIndexPath *)indexPath {  
    [self.tableView selectRowAtIndexPath:indexPath animated:NO scrollPosition:UITableViewScrollPositionNone];
    UITableViewCell *cell = [tableView cellForRowAtIndexPath:indexPath];

    if(cell == nil){
        if(Type == Scene){
            Group *scene = [[appdata getScenes]objectAtIndex:lastRequestedPropertyPosition];
            [selectedArray addObject:scene.id];
        }else if(Type == Product){
            Device *device = [[appdata getDevices]objectAtIndex:lastRequestedPropertyPosition];
            [selectedArray addObject:device.id];
        }
    }else{
        [selectedArray addObject:[NSNumber numberWithInt:cell.tag]];
    }
}

谁能告诉我这里出了什么问题?

由于

修改 使用它只会使分隔符在选择时消失,而不是仅仅保留分隔符。

- (UITableViewCell *)tableView:(UITableView *)tableView cellForRowAtIndexPath:(NSIndexPath *)indexPath {
    UITableViewCell *cell = [tableView dequeueReusableCellWithIdentifier:@"protoCell" forIndexPath:indexPath];
    if (!cell) {
        cell = [[UITableViewCell alloc]initWithStyle:UITableViewCellStyleDefault reuseIdentifier:@"protoCell"];
    }
    Group *group = [[appdata getScenes] objectAtIndex:indexPath.row];
    if(group != nil){
        [cell.textLabel setText:group.name];
    }

    cell.tag = group.id.intValue;
    return cell;
}

2 个答案:

答案 0 :(得分:1)

我的问题的原因是我使用蓝色色调来显示正在选择的单元格。然而,这种阴影有点太大了。它覆盖了分离器

答案 1 :(得分:0)

tableView:didSelectRowAtIndexPath中,如果您同时发送以下两封邮件,则会直观地解决问题(可能会产生性能成本)。

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

要使其发挥作用(对我来说),deselectRowAtIndexPath:animated:必须包含animated:YES。用于reloadRowsAtIndexPaths:withRowAnimation:的动画并不重要。