【发布时间】:2015-02-05 19:50:53
【问题描述】:
我有一个UITableViewCell,它会在点击时展开并添加一个标签。
逻辑:
我在
cellForRowAtIndexPath中为所选单元格添加了一个标签,并且 在didSelectRow...我重新加载了tableView。在heightForRow...选定的单元格展开。希望你能得到照片。
在didSelectRow... 我必须重新加载数据,而不是开始/结束更新。我想要做的是 reloadData 并让它动画。我可以这样做:
[UIView transitionWithView: tableView
duration: 0.40f
options: UIViewAnimationOptionTransitionCrossDissolve
animations: ^(void)
{
[self.tableView reloadData];
}
completion: nil
}];
这样就可以交叉溶解正在变化的细胞。我想要的是UITableViewRowAnimationTop,但显然这在过渡选项中是不可能的。有没有办法reloadData 和使用UITableViewRowAnimationTop?
【问题讨论】:
-
调用
reloadData会破坏当前表格视图中的所有单元格并从头开始重建所有内容。如果这不是您想要的行为,您可能正在寻找其他方法。 -
那么没有办法将
UITableViewRowAnimationTop与reloadData 一起使用? -
您尝试过使用beginUpdates 和更新块吗?
-
你的意思是[tableView beginUpdates]; [tableView EndUpdates]?
-
这个聚会有点晚了——根据您的描述,您希望细胞生长并适应新标签。一种现代的方法是使用“自动调整大小的单元格”并适当地设置自动布局。如果您使用的是自调整大小的单元格,那么您可以简单地执行以下操作:
tableView.beginUpdates(); tableView.endUpdates()并且单元格将适当地扩展合同以匹配其当前内容。不需要重新加载(除非表的有效索引路径集已更改)。您可以找到有关此here 方法的更多详细信息。
标签: ios objective-c uitableview reloaddata