我有一个表视图,可以通过按下编辑并将单元格拖动到新位置来重新排列。我遇到的问题是当应用程序关闭或您转到另一个视图控制器然后返回到表视图时,单元格已回到其原始位置。以下是启用重新排列的代码:
- (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 :(得分:2)
改变这个:
[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