继我上一期的问题之后,我有一个用2个NSMutableArrays填充的tableview,2个部分和2个部分标题,所有这些都正常工作。
incompleteItems = [NSMutableArray arrayWithObjects: @"Item 1", @"Item 2", @"Item 3"... , nil];
completeItems = [NSMutableArray arrayWithObjects: nil];
我已对其进行了设置,以便当用户向右滑动时,手机配件会从显示更改为复选标记,并且当向左滑动时会从复选标记更改为显示。使用handleSwipeLeft / Right方法实现手势。
我想要做的是当用户向右滑动时,incompleteItems数组中的Item被移动到completedItems数组中,从而将项目从“Incomplete”部分移动到“Complete”部分。 / p>
实现这样的事情最好的方法是什么?我的经验有限,所以这有点不为我所知。
任何帮助一如既往的赞赏。
答案 0 :(得分:1)
您可以简单地将对象从一个数组添加到另一个数组,然后立即将其删除。
-(void)incompleteToCompleteAtIndex:(NSUInteger)index
{
[complete addObject:[incompleteItems objectAtIndex:index]];
[incompleteItems removeObjectAtIndex:index];
}
-(void)completeToIncompleteAtIndex:(NSUInteger)index
{
[incompleteItems addObject:[complete objectAtIndex:index]];
[complete removeObjectAtIndex:index];
}
由于这只会在UI操作中发生,我认为这将在主线程上发生,并且没有理由进行锁定。
答案 1 :(得分:0)
你需要一个漂亮的动画吗?查看:deleteRowsAtIndexPaths:withRowAnimation:
和insertRowsAtIndexPaths:withRowAnimation:
。确保使用beginUpdates
和endUpdates
打包这些来电。
我不知道将单元格从一个tableView移动到另一个tableView的简单方法。我可以设想一种方法,要求您手动执行3步动画,删除单元格(并将其添加到浮动在整个视图层次结构前面的新视图),将新视图移动到目标位置(您可以需要做自己的数学来确定目的地的屏幕坐标),最后是一个加法动画。您可以使用一个完全透明的虚拟单元格,并在动画的第一个和最后一个部分中交换它,以使tableview能够保存您传输的单元格的位置。