在表格视图中保存重新排列的单元格的顺序

时间:2013-06-11 20:01:59

标签: uitableview

我有一个应用程序可以重新排列UITableViewCells的顺序,并可以删除单元格但是,我需要一种方法来保存重新排列和删除的表格视图单元格的顺序。我正在使用nsmutablearray

  - (void)viewDidLoad
{
[super viewDidLoad];
if (!maTheData) {
maTheData = [[NSMutableArray alloc]     initWithObjects:@"Bus", @"Truck", @"Car",nil];


}
}

- (NSInteger)numberOfSectionsInTableView:  (UITableView *)tableView
{
return 1;
}

- (NSInteger)tableView:(UITableView *)tableView   numberOfRowsInSection:(NSInteger)section
{
return [maTheData count];
}

- (UITableViewCell *)tableView:(UITableView *)tableView cellForRowAtIndexPath:(NSIndexPath           *)indexPath
{
UITableViewCell *cell = [tableView   dequeueReusableCellWithIdentifier:@"tvcItems"];
UILabel *lblName = (UILabel *)[cell viewWithTag:100];
[lblName setText:[maTheData objectAtIndex:   [indexPath row]]];
return cell;
}

- (void)tableView:(UITableView *)tableView   commitEditingStyle:         (UITableViewCellEditingStyle)editingStyle      forRowAtIndexPath:(NSIndexPath *)indexPath
{
if (editingStyle == UITableViewCellEditingStyleDelete) {
// Delete the row from the data source
[maTheData removeObjectAtIndex:[indexPath row]];
// Delete row using the cool literal version of [NSArray     arrayWithObject:indexPath]
[tableView deleteRowsAtIndexPaths:@[indexPath]       withRowAnimation:UITableViewRowAnimationFade];
}
else if (editingStyle ==  UITableViewCellEditingStyleInsert) {
// Insert something into the array, and you can just    add a populated NSIndexPath of   data or simplr reload    data
[maTheData addObject:@"I'm a new item!"];
[tableView reloadData];
}
}

- (void)tableView:(UITableView *)tableView  moveRowAtIndexPath:(NSIndexPath *)fromIndexPath   toIndexPath:(NSIndexPath *)toIndexPath
 {
NSString *mover = [maTheData objectAtIndex: [fromIndexPath row]];
[maTheData removeObjectAtIndex:[fromIndexPath    row]];
[maTheData insertObject:mover atIndex:[toIndexPath row]];

[tableView setEditing:NO animated:YES];

}

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



- (void)tableView:(UITableView *)tableView didSelectRowAtIndexPath:(NSIndexPath *)indexPath
{
[tableView setEditing:YES animated:YES];
 } 

1 个答案:

答案 0 :(得分:-2)

要在应用程序重新启动时保留数据,您必须将maTheData的内容序列化为NSData,然后通过NSDataNSUserDefaults的内容写入磁盘,或者您自己选择的文件。在后一种情况下,您还必须决定要在哪个文件夹中放置该文件 - 我建议使用Application Support文件夹,或者无论如何, Documents文件夹。

我知道这不是一个复制和粘贴解决方案,但它应该让您开始进一步的研究。只需阅读Apple文档和谷歌,网上有大量资源可以解释如何详细说明。