我有一个包含复杂内容的 UITableView。用户可以通过标准方式点击“编辑”按钮来编辑(重新排列和删除)单元格。但我希望单元格在“编辑”模式下看起来有所不同。
问题:
如何在编辑模式下更改 UITableView 布局,包括更改行高?
到目前为止,这就是我所拥有的:
“编辑”按钮向每个 uitableviewcell (UITVC) 发送 WillTransitionToState/DidTransitionToState 消息。我对 UITVC 进行了子类化,并对每个单元格内的这些内容使用react,根据需要隐藏、删除和重新洗牌。但是,更改行高超出了一个单元格的范围。
当用户点击编辑时,似乎没有消息发送到 UITableView。有一个 - tableView:commitEditingStyle:forRowAtIndexPath: 在编辑特定行后发送到数据源。
在 heightForRowAtIndexPath 内,我可以使用 tableView.editing 属性查询当前模式,并根据需要报告高度。我可以通过调用 [tableView reloadData] 触发表格的重新流动,包括重新计算高度。但是,我什么时候调用它?
我可以将来自 WillTransitionToState 中的单元格的消息发送回“拥有的” TableView ,并在收到它们时调用 reloadData。但这听起来很脆弱,必须有更好的方法。
最佳答案
节奏是对的。使用 reloadData 会破坏漂亮的编辑动画。
这个问题在这篇文章中得到解决: Can you animate a height change on a UITableViewCell when selected?
不要使用 reloadData,而是在调用 setEditing:animated 后执行以下操作。
[tableview setEditing:editing animated:YES];
[tableview beginUpdates];
[tableview endUpdates];
关于iphone - 当用户点击“编辑”按钮时重做 UITableView 布局?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/2223784/