当我选择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;
}
答案 0 :(得分:1)
我的问题的原因是我使用蓝色色调来显示正在选择的单元格。然而,这种阴影有点太大了。它覆盖了分离器
答案 1 :(得分:0)
在tableView:didSelectRowAtIndexPath
中,如果您同时发送以下两封邮件,则会直观地解决问题(可能会产生性能成本)。
[tableView deselectRowAtIndexPath:indexPath animated:YES];
[tableView reloadRowsAtIndexPaths:@[indexPath] withRowAnimation:UITableViewRowAnimationAutomatic];
要使其发挥作用(对我来说),deselectRowAtIndexPath:animated:
必须包含animated:YES
。用于reloadRowsAtIndexPaths:withRowAnimation:
的动画并不重要。