我有一个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
,这解决了问题,但这会使表跳动。它会下降得太远,留下空白,然后跳回到顶部。如何缩小表格单元格而不使其向下滚动太远?
答案 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];
}];
});