Warning: file_get_contents(/data/phpspider/zhask/data//catemap/0/iphone/35.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Iphone 当用户点击“编辑”按钮时是否重做UITableView布局?_Iphone_Cocoa Touch_Uitableview - Fatal编程技术网

Iphone 当用户点击“编辑”按钮时是否重做UITableView布局?

Iphone 当用户点击“编辑”按钮时是否重做UITableView布局?,iphone,cocoa-touch,uitableview,Iphone,Cocoa Touch,Uitableview,我有一个内容复杂的UITableView。用户可以通过标准方式点击编辑按钮编辑(重新排列和删除)单元格。但我希望单元格在“编辑”模式下看起来不同 问题: 如何在编辑模式下更改UITableView布局,包括更改行高 到目前为止,我的情况如下: 编辑按钮向每个uitableviewcell(UITVC)发送WillTransitionState/DidTransitionState消息。我已经对UITVC进行了子类化,并在每个单元内对其作出反应,根据需要隐藏、移除和重新排列。但是,更改行高度超出了

我有一个内容复杂的UITableView。用户可以通过标准方式点击编辑按钮编辑(重新排列和删除)单元格。但我希望单元格在“编辑”模式下看起来不同

问题:

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

到目前为止,我的情况如下:

编辑按钮向每个uitableviewcell(UITVC)发送WillTransitionState/DidTransitionState消息。我已经对UITVC进行了子类化,并在每个单元内对其作出反应,根据需要隐藏、移除和重新排列。但是,更改行高度超出了一个单元格的范围

当用户点击编辑时,似乎没有发送到UITableView的消息。编辑特定行后,会将-tableView:CommittedItingStyle:forRowAtIndexPath:发送到数据源

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


我可以将willTransitionState中的单元格中的消息发送回“owning”表视图,并在获取它们时调用reloadData。但这听起来很脆弱,必须有更好的方法。

如果您希望表格单元格根据表格是否处于编辑模式而更改其格式,您可以在UITableViewController中覆盖
-setEditing:animated:
,并触发重新加载(通过
-reloadData
)更改编辑状态时对表视图的更改


在UITableViewController的
-tableView:CellForRowatineXpath:
方法中,您可以通过查询表视图上的
editing
属性来检查表是否处于编辑状态,然后根据表所处的状态返回不同的单元格类型。

。使用“重新加载数据”会终止漂亮的编辑动画

这个问题在这篇文章中得到了解决:

调用setEditing后,请执行以下操作,而不是使用重载数据:animated

[tableview setEditing:editing animated:YES];
[tableview beginUpdates];
[tableview endUpdates];

一切正常。我一开始就感到困惑,因为正确的方法签名是-(void)setEditing:(BOOL)editing animated:(BOOL)animate,但我使用的是-(UITableView*)tableView setEditing:(BOOL)editing animated:(BOOL)animate,这当然不起作用。因此,请始终在文档中重复检查方法签名。:)