如何将数据从一个数组移动到另一个数组?使用UITableView

时间:2012-12-20 19:21:46

标签: objective-c cocoa-touch uitableview ios6 nsmutablearray

继我上一期的问题之后,我有一个用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>

实现这样的事情最好的方法是什么?我的经验有限,所以这有点不为我所知。

任何帮助一如既往的赞赏。

2 个答案:

答案 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:。确保使用beginUpdatesendUpdates打包这些来电。

我不知道将单元格从一个tableView移动到另一个tableView的简单方法。我可以设想一种方法,要求您手动执行3步动画,删除单元格(并将其添加到浮动在整个视图层次结构前面的新视图),将新视图移动到目标位置(您可以需要做自己的数学来确定目的地的屏幕坐标),最后是一个加法动画。您可以使用一个完全透明的虚拟单元格,并在动画的第一个和最后一个部分中交换它,以使tableview能够保存您传输的单元格的位置。