当用户点击编辑按钮时重做UITableView布局?

Jaa*_*nus 2 iphone cocoa-touch uitableview

我有一个复杂内容的UITableView.当用标准方式点击"编辑"按钮时,用户可以编辑(重新排列和删除)单元格.但我希望细胞在"编辑"模式下看起来不同.

题:

如何在编辑模式下更改UITableView布局,包括更改行高?

到目前为止,这就是我所拥有的:

"编辑"按钮向每个uitableviewcell(UITVC)发送WillTransitionToState/DidTransitionToState消息.我已经将UITVC子类化并对每个单元内的这些进行反应,根据需要进行隐藏和移除以及重新洗牌.但是,更改行高超出了一个单元格的范围.

当用户点击编辑时,似乎没有向UITableView发送消息.有一个 - tableView:commitEditingStyle:forRowAtIndexPath:在编辑特定行后发送到数据源.

在heightForRowAtIndexPath里面,我可以使用tableView.editing属性查询当前模式,并根据需要报告高度.我可以通过调用[tableView reloadData]来触发重新流动表,包括重新计算高度.但是,我什么时候打电话给它?

我可以将来自WillTransitionToState内的单元格的消息发送回"拥有"表视图,并在获取它们时调用reloadData.但这听起来很脆弱,必须有更好的方法.

小智 8

节奏是对的.使用reloadData可以杀死漂亮的编辑动画.

这篇文章解决了这个问题: 你可以选择UITableViewCell上的高度变化动画吗?

在调用setEditing:animated之后,请执行以下操作,而不是使用reloadData.

[tableview setEditing:editing animated:YES];
[tableview beginUpdates];
[tableview endUpdates];
Run Code Online (Sandbox Code Playgroud)