2014-08-28 66 views
0

我有一个表格视图,可以通过按编辑并将单元格拖动到新的位置来重新排列。我遇到的问题是应用程序关闭或者您转到其他视图控制器,然后返回到表格视图时,单元格已恢复到原始位置。这里是我的代码,以便重新排列:如何保存重新排列的表格视图位置

- (void)tableView:(UITableView *)tableView moveRowAtIndexPath:(NSIndexPath *)fromIndexPath toIndexPath:(NSIndexPath *)toIndexPath 
{ 
    [arrayData removeObjectAtIndex:fromIndexPath.row]; 
    [arrayData removeObjectAtIndex:toIndexPath.row]; 
} 

// Override to support conditional rearranging of the table view. 
- (BOOL)tableView:(UITableView *)tableView canMoveRowAtIndexPath:(NSIndexPath *)indexPath 
{ 
    // Return NO if you do not want the item to be re-orderable. 
    return YES; 

} 
+0

退房这个答案的正确引导。 http://stackoverflow.com/questions/17593068/getting-the-order-of-reordered-uitableviewcells – 2014-08-28 17:49:47

回答

0

更改此:

[arrayData removeObjectAtIndex:fromIndexPath.row]; 
[arrayData removeObjectAtIndex:toIndexPath.row]; 

为了这样的事情:

NSString *stringToMove /*or whatever*/ = [arrayData objectAtIndex:fromIndexPath.row]; 
[arrayData removeObjectAtIndex:fromIndexPath.row]; 
[arrayData insertObject:stringToMove atIndex:toIndexPath.row]; 

基本上,你不能再插入数据,你只是删除它。

要保持视图控制器重新加载时的顺序,您需要确保数组保存在某处。例如,将其保存为plist文件可能有效。

参考:Apple docs

+0

我已经添加了该代码,但它仍然无法正常工作。我正在使用核心数据来保存信息,这是否会导致问题? – Chris1994 2014-08-28 17:58:02

+0

是否在重新加载表视图之前从核心数据中抽取信息? – rebello95 2014-08-28 18:06:31

+0

我重新加载viewdidappear中的表视图,因为用户从另一个视图控制器输入数据,然后当表视图出现时它会加载数据。 – Chris1994 2014-08-28 18:15:22