具有表的视图层次结构中单元格值的持久性

时间:2013-07-16 13:42:35

标签: ios uitableview uinavigationcontroller persistence

我将解释我的场景:我有一个自定义类,其属性旨在通过表单获取用户提供的信息。这是自定义类:

@interface CustomClass : NSObject

@property NSInteger iD;
@property (strong, nonatomic) NSString *profilePicUrl;
@property (strong, nonatomic) NSString *email;
@property (strong, nonatomic) NSString *firstName;
@property (strong, nonatomic) NSString *lastName;
@property (strong, nonatomic) NSString *address; 
@property NSInteger zipCode;
@property (strong, nonatomic) NSMutableArray *products;
@property BOOL isEnabled;

@end

表单由三个带UITableView的视图组成,其各自的视图控制器位于UINavigationController之内。这样,它就像一个多步骤形式:存在请求用户输入的第一视图,然后导航到请求用户输入的第二视图,然后在提交所提供的数据之前导航到显示信息的第三视图。导航栏的“后退”按钮已启用,因此用户可以返回上一步完成/更改其输入。

表的单元格具有不同的类型,对应于我所描述的自定义类的属性:其中一些具有文本字段(例如,用于输入名字和姓氏的单元格),其他一些是开关(“ isEnabled“属性”,我有一个单元格,其中一个按钮显示UIImagePickerController来拍照(单元格为个人资料图片)。

我想创建一个CustomClass的实例,并在表单的第三步完成数据提交。在第一个视图中请求信息的一部分(个人资料图片,电子邮件,名字和姓氏),其余的在第二个视图(地址,邮政编码,产品)中被请求,所以我需要通过{ {1}}通过导航层次结构的三个视图控制器对象。

我的问题是:当用户输入单元格时,如何管理单元格中值的持久性?我应该以某种方式“绑定”CustomClass属性到每个相应的单元格吗?我希望用户能够在表单中转发并返回,并保留她已输入的数据。看起来我在文本字段中键入的值是保留的,如果我从第一个视图导航到第二个,然后我再次返回到第一个,则保留文本字段值,但不保留其余单元格的内容。如果应用程序突然终止并且我不希望用户再次输入所有信息该怎么办?注意:我的应用必须支持iOS 5。

管理此方案的最佳方法是什么?谢谢!

1 个答案:

答案 0 :(得分:0)

您必须在CustomClass中保留信息。您可以通过将其写入纯文本文件,属性列表或使用数据库,甚至使用NSUserDefaults基础结构来完成此操作。

只要输入数据,就会立即进行保存,例如在textField:didEndEditing和此类回调中。您将更新CustomClass对象的属性,然后将其保留。