0

我是 iOS 开发的新手——我正在研究在不同视图之间传递数据......

假设我有一个包含十个问题的清单。每个问题将有一个不同的页面,其中包含一个转换,UI 将包含一个上一个/下一个按钮以及为每个问题收集的输入。

如何显示每个问题并以“步骤”收集数据,然后最终将所有内容保存为核心数据模型中的一个条目?

你能告诉我这是怎么做的吗?非常感激!谢谢!

4

2 回答 2

1

正如 inafziger 提到的,最好在最后一次视图调用保存数据时使用单例,但不要在每个视图结束时使用,因为这样可以提高性能。听起来好像数据与您的整个应用程序相关。

如果是这样的话,我会把你的:

@property (nonatomic, retain) NSManagedObjectContext *managedObjectContext;
@property (nonatomic, retain) NSManagedObjectModel *managedObjectModel;
@property (nonatomic, retain) NSPersistentStoreCoordinator *persistentStoreCoordinator;

在您的应用程序委托内部,您可以通过这种方式从任何地方访问它们,如果您需要从上一个问题中获取信息,您可以轻松地执行该操作。

我希望这有帮助

编辑:( 关于您的评论)

假设您对每个问题都有相同或相似的布局,您可以ViewController使用不同的参数推送相同的新实例,即

UIViewController* myNewVC = [UIViewController alloc] init];
[myNewVC setQuestion:self.question+1];
[[AppDelegate sharedDelegate].navigationController pushViewController:myNewVC animated:YES]

或者与上面类似的东西,还要注意,UITableViewController 始终是 UIViewController,但 UIViewController 并不总是 UITableViewController。

ViewController 这样,您每次都可以显示一个新问题,并为每个问题重复使用完全相同的问题

于 2012-05-23T01:28:14.203 回答
0

我会将问题存储在具有属性问题编号的问题实体中的数据模型中。然后我会让我的视图控制器跟踪 ivar 中的当前问题编号。每次前进或后退时,您都可以增加或减少当前问题编号并从核心数据中获取问题。

我强烈建议避免将您的代码的不同部分耦合到您的应用程序委托。相反,Apple 鼓励您通过设置属性或使用委托模式将必要的数据结构从视图控制器传递到视图控制器。

于 2012-05-23T06:56:56.750 回答