如何在启用编辑的情况下在表视图中移动行后显示重新排列控件

时间:2012-08-14 11:14:59

标签: ios uitableview setediting

所以我昨晚偶然发现了iOS SDK的一个相当不方便的“功能”,我想和你们分享我的发现和解决方案。如果要获得输入,是否应该有更好的解决方案。

方案

我有一个表格视图设置有两个部分,收藏项目另一个所有其他项目。点击表格视图中的一行将切换该项目是否标记为收藏;点击收藏项部分中的一行,会将其从收藏夹中删除,同时点击所有其他项部分中的一行会将此项添加到收藏夹中。

当切换收藏的状态时,我使用moveRowAtIndexPath:toIndexPath:做一个漂亮的小动画,并将行从收藏夹部分移动到所有其他部分。

问题

因此,问题出现了,因为用户不仅应该能够切换收藏状态,而且收藏夹部分中的所有项目都应该可以重新排列。因此,我想在收藏项目部分的每一行中显示重新排列控件。

但是,在调用moveRowAtIndexPath:toIndexPath:时,不会重绘单元格,而fromIndexPath和toIndexPath都在可见区域中。这意味着在向收藏项目部分添加新行时,不会显示重新排列控件。

1 个答案:

答案 0 :(得分:0)

<强>解决方案

在文档中查看页面后页,在StackOverflow上进行线程并尝试各种内容后,我终于找到了解决方案。

调用moveRowAtIndexPath:toIndexPath:后,我立即调用以下行:

[cell setEditing:NO]
[cell setEditing:YES]

这会导致一个单元格理解它对重新排列的限制已经改变,从而适当地显示/隐藏重新排列控件。

我发现这个解决方案非常黑客,所以我很乐意听到更好的解决方案。但至少现在有一个解决方案,让其他人享受。