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

标签 iphone cocoa-touch uitableview

我有一个包含复杂内容的 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/

相关文章:

ios - preferredStatusBarHidden 在自定义单元格和对象类中

iphone - 如何在 iPhone sdk 的 MFMailComposer 中创建并附加 CSV 文件?

ios - 如何从 UiTableViewCell 更改 View Controller 中字典的值

iphone - UITableViewCell 中的复选框图像切换

iphone - iPhone 应用程序编译代码中包含的信息有多安全?

iphone - 在提交到 App Store 之前我必须删除 TestFlight 吗?

objective-c - View 中 View 的网格或平铺算法

ios - 在 objective-c 中创建默认变量(对象)

ios - 以编程方式展开 Segue - 新的转折

ios - 获取 UIButton 的 UITableViewCell?