保存和加载tableview的状态

时间:2011-08-10 04:05:32

标签: iphone tableview

我有一个tableview,用户可以使用滑块制作部分人。所以每个部分可以有任意数量的人。我想保存该tableview的状态,然后在它们返回时重新加载它。

我认为,由于我使用核心数据,因此我可以为每个人提供行和节属性。所以我能够保存它,但我不知道在它再次出现时使用这些值来填充tableview的最佳方法。

我认为NSUserDefaults并不是最好的,因为我有很多可以分成几个部分的组。我几天来一直在努力解决这个问题的最好方法,我仍然不确定该怎么做。

更多 (每mihir mehta)

// Set core data values
    int sec = 0;
    int row = 0;
    for (NSArray *section in groupsArray) {
        for (People *person in section) {
            [person setSubgroupSection:[NSNumber numberWithInt:sec]];
            [person setSubgroupRow:[NSNumber numberWithInt:row]];
            row++;
        }
        sec++;
        row = 0; // new section so restart the row count
    }

3 个答案:

答案 0 :(得分:2)

如果您已熟悉CoreData,那么您应该坚持使用您描述的计划。我看待它的方式你应该做出某种TableViewInfoManagedObject:NSManagedObject。此TableViewInfoManagedObject应该包含@dynamic numberOfSections等成员,用于描述表视图工作所需的内容。

如果您使用CoreData管理人员已考虑使用关系将numberOfSections映射到numberOfGroups或您People:NSManagedObject中的任何内容。

此外,您需要考虑何时“保存”您的状态,这似乎完全由滑块决定。在这种情况下,您可能希望为valueChanged实现IBAction

编辑0:根据您提供的代码段,它似乎在循环结束时您将拥有所需的必要信息。 sec的最终值应与UITableViewDataSource委托方法-(NSInteger)numberOfSectionsInTableView:(UITableView *)tableView相对应,我不确定为什么要设置People对象的行号,除非您正在尝试实现某种排序顺序,这应该由NSSortDescriptor完成。因此,tableView:numberOfRowsInSection应返回[[peopleinSection: section] count]之类的内容,并应设置tableView:cellForRowAtIndexPath,以便返回cell.textLabel.text = [[[peopleInSection:indexPath.section] objectAtIndex:indexPath.row] getPersonName]之类的单元格。有意义吗?

答案 1 :(得分:1)

如何为需要保存的每个对象创建一个类(NSObject的子类),在该类中,您可以为每个对象添加属性。然后,您可以使用NSKeyedArchiver / Unarchiver来保存和加载对象以便重用。

答案 2 :(得分:0)

创建一个将row和Section作为参数的函数,并通过搜索数组返回该特定的人....明白我的观点?