折叠TableViewCell时如何摆脱不必要的空格

时间:2018-09-24 22:53:13

标签: ios objective-c uitableview

我有一个UITableView,其中的单元格在用户使用以下命令时会展开/折叠:

-(void)tableView:(UITableView *)_tableView didSelectRowAtIndexPath:(NSIndexPath *)indexPath {
  ...
  [tableView reloadRowsAtIndexPaths:[NSArray arrayWithObject:indexPath] withRowAnimation:UITableViewRowAnimationFade];
  ...
}

运行reloadRowsAtIndexPath之后,我让heightForRowAtIndexPath返回不同的高度,具体取决于单元格是折叠还是展开:

-(CGFloat)tableView:(UITableView *)_tableView heightForRowAtIndexPath:(NSIndexPath *)indexPath {
  // if expand
  return 200;
  // if collapse
  return 49;
}

当我折叠表格底部的单元格时,表格会收缩,但会降低得太远,在表格顶部会留下大量空白。我在调用[tableView scrollToRowAtIndexPath:indexPath]之后尝试了reloadRowsAtIndexPaths,这解决了问题,但这会使表跳动。它会下降得太远,留下空白,然后跳回到顶部。如何缩小表格单元格而不使其向下滚动太远?

2 个答案:

答案 0 :(得分:0)

更改影响tableView高度的内容后,可以使用以下代码更新单元格高度,而无需重新加载表格:

[tableView beginUpdates];
[tableView endUpdates];

答案 1 :(得分:0)

也许您可以在主线程中使用$(document).ready(function() { $('#example').DataTable( { data: dataSet, columns: [ { title: "Name" }, { title: "Position" }, { title: "Office" }, { title: "Extn." }, { title: "Start date" }, { title: "Salary" }] } ); } ); 动画来避免这种情况,例如:

UIView

然后尝试:

dispatch_async(dispatch_get_main_queue(), ^{
    [UIView animateWithDuration:0.3 animations:^{
        [self.tableView scrollToRowAtIndexPath:[NSIndexPath indexPathForRow:0 inSection:0] atScrollPosition:UITableViewScrollPositionTop animated:YES];
    }];
});