所以我昨晚偶然发现了iOS SDK的一个相当不方便的“功能”,我想和你们分享我的发现和解决方案。如果要获得输入,是否应该有更好的解决方案。
方案
我有一个表格视图设置有两个部分,收藏项目另一个所有其他项目。点击表格视图中的一行将切换该项目是否标记为收藏;点击收藏项部分中的一行,会将其从收藏夹中删除,同时点击所有其他项部分中的一行会将此项添加到收藏夹中。
当切换收藏的状态时,我使用moveRowAtIndexPath:toIndexPath:
做一个漂亮的小动画,并将行从收藏夹部分移动到所有其他部分。
问题
因此,问题出现了,因为用户不仅应该能够切换收藏状态,而且收藏夹部分中的所有项目都应该可以重新排列。因此,我想在收藏项目部分的每一行中显示重新排列控件。
但是,在调用moveRowAtIndexPath:toIndexPath:
时,不会重绘单元格,而fromIndexPath和toIndexPath都在可见区域中。这意味着在向收藏项目部分添加新行时,不会显示重新排列控件。
答案 0 :(得分:0)
<强>解决方案强>
在文档中查看页面后页,在StackOverflow上进行线程并尝试各种内容后,我终于找到了解决方案。
调用moveRowAtIndexPath:toIndexPath:
后,我立即调用以下行:
[cell setEditing:NO]
[cell setEditing:YES]
这会导致一个单元格理解它对重新排列的限制已经改变,从而适当地显示/隐藏重新排列控件。
我发现这个解决方案非常黑客,所以我很乐意听到更好的解决方案。但至少现在有一个解决方案,让其他人享受。