【问题标题】:How to Save UITableViewController cells after rearrange to NSUserDefaults重新排列到 NSUserDefaults 后如何保存 UITableViewController 单元格
【发布时间】:2015-08-29 07:43:28
【问题描述】:

我有一个使用 Objective-C 和 Xcode 6.4 开发的 iOS 应用程序

知道我正在手动重新排列 UITableViewController 单元格,一切正常。但是在我按下栏按钮 EDIT 并且“3 个下划线”似乎将单元格拖动到 UITableViewController 中我想要的任何位置后,((我无法保存我所做的))强>。那么我怎样才能持久保存对表格单元格位置所做的更改??我的意思是,如何将新的重新排列的NSMutableArray保存到属性列表-NSUserDefaults-。

我正在使用可变数组来显示表格的单元格以及以下这些方法:

-(UITableViewCellEditingStyle)tableView:(UITableView *)tableView editingStyleForRowAtIndexPath:(NSIndexPath *)indexPath {
    return UITableViewCellEditingStyleNone;
}

-(BOOL)tableView:(UITableView *)tableView canMoveRowAtIndexPath:(NSIndexPath *)indexPath {
    return YES;
}

-(BOOL)tableView:(UITableView *)tableView canEditRowAtIndexPath:(NSIndexPath *)indexPath {
    return YES;
}

- (void)tableView:(UITableView *)tableView moveRowAtIndexPath:(NSIndexPath *)fromIndexPath toIndexPath:(NSIndexPath *)toIndexPath {
    FileWML *fileWML = [self.filesWML objectAtIndex:sourceIndexPath.row];
    [self.filesWML removeObjectAtIndex:sourceIndexPath.row];
    [self.filesWML insertObject:fileWML atIndex:destinationIndexPath.row];
}

PLUS有人能告诉我如何让编辑按钮在编辑时显示“完成”字样吗?

((我做的事情无法保存)) 意思是:按我想要的顺序排列后,然后我就回家了视图然后我回到我编辑和重新排列的表格视图,我确实回到了默认顺序的重新排列顺序。所以,我所做的所有重新安排都没有了。

感谢您的帮助。

【问题讨论】:

  • 试试 [tableView visibleCells ]。它会为您提供屏幕上的所有单元格。
  • “无法保存”是什么意思?您的意思是当您移动单元格的位置时,它们不会在滚动或重新加载表格视图后保持在新位置?
  • “无法保存”是什么意思?我的意思是在我关闭我的应用程序或转到另一个视图控制器之后。然后我又回来了,我确实回到了我编辑之前的重新排列顺序。 (这样清楚吗??)
  • 从哪里获取表视图数据?
  • 从单独的文件中包含数组数据,我已经将文件导入到我的标题中。

标签: ios objective-c uitableview nsarray nsuserdefaults


【解决方案1】:

您必须从数组中的文件加载数据。该数组将是您的 tableView 数据源。 当移动一行时,在委托方法中,您必须更改对象在数组中的位置。您的数组应始终与您的 tableview 相同! 完成表格视图的编辑后,您将数组保存在文件中。文件中以前的内容应该被删除。然后你重新加载你的数据([tableView reloadData]。

【讨论】:

  • 所有这些都将在moveRowAtIndexPath 方法中完成。对 ? 1-更改对象在数组中的位置。 2-您的数组应始终与您的表格视图相同。 3-一旦表格视图的编辑完成,您将数组保存在文件中。 4-文件中以前的内容应该被删除。请你好心并提供它的代码。并感谢任何一种方式:)
  • 不确定,我想我会在 tableView 中尝试:didEndEditingRowAtIndexPath:
  • 和代码?你能提供他们吗?我已经开始寻找它们了,但如果你能帮我写出来会更好。
  • 我在我的 iPhone 上,但您必须从数组中的原始索引处获取对象,然后删除数组中的原始行,在其新索引处插入对象。然后调用 tableView 上的 reloadData 以查看屏幕上的修改。
  • moveRowAtIndexPath 方法中,我添加了这些行:FileWML *fileWML = [self.filesWML objectAtIndex:sourceIndexPath.row]; [self.filesWML removeObjectAtIndex:sourceIndexPath.row]; [self.filesWML insertObject:fileWML atIndex:destinationIndexPath.row]; [tableView reloadData]; } 仍然没有工作,我设置的重新排列顺序在我进入主页视图后消失了。有什么新想法吗??
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2018-12-30
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多