在不使用PrepareForSegue的情况下在不同的段之间传递数据

我使用故事板创build了5个步骤的用户设置帐户。 每个步骤都有一个ViewController:1º)input姓名,联系人等等,2º)导入照片,3º)input等等4º)更多的input5º)确认页面,如果用户点击“确认” – >获取所有input并上传到parsing。

我在网上search的唯一解决scheme是创build一个func“为Segue做准备”并传递信息…但对于我来说,这没有任何意义:

如果我有1000个视图控制器,第一个视图控制器信息将通过所有1000视图控制器传递? 为什么nº1000视图控制器不能获取所有留下的信息呢? 例如:视图控制器nº50不需要关于视图控制器的信息nº1…这是一个废话。

有没有其他方法来实现这一点?

也许有一个解决scheme,因为我使用parsing像我这样做:

ParseClass [“Name”] = textfield.text

它将信息发送给Parse,并保存它,直到我做了像Sav​​eInBackground()这样的操作。

我试图find像这样使用viewcontrollers的解决scheme。 每个视图控制器发送信息来parsing和保存信息,直到在viewcontrollernº5上发生“saveinbackground()”。

可能? 谢谢

对的,这是可能的。 你可以使用NSUserDefaults来存储你的信息到内存中,一旦被存储了,你可以在项目的任何地方使用它。

就像你可以用这种方式存储价值一样:

 NSUserDefaults.standardUserDefaults().setObject(yourObject, forKey: "yourKey") 

现在你可以从任何地方使用yourKey来检索这个信息:

 let yourInstance = NSUserDefaults.standardUserDefaults().objectForKey("yourKey") 

而且你可以根据自己的需要进行转换。

欲了解更多信息,请阅读Apple Document for NSUserDefaults 。

还有一种方法可以通过使用ClassStruct来将值从一个视图传递到另一个视图。

您可以从Apple文档中阅读更多关于ClassesStructures 信息 。

如果我们的input是有限的,则创build一个模型类,其中包含以下属性:

 @interface UserDataInput : NSObject @property (nonatomic)NSString *name; @property (nonatomic)NSString *contactNumber; .... blah blah bla .... @end 

然后把它作为一个单独的类

 @implementation UserDataInput + (instancetype)sharedInstance { static dispatch_once_t onceToken; static UserDataInput *sharedInstance = nil; dispatch_once(&onceToken, ^{ sharedInstance = [[[self class] alloc] init]; }); return sharedInstance; } @end 

然后设置视图控制器的属性离开视图控制器,

 UserDataInput *sharedInput = [UserDataInput sharedInstance]; sharedInput.name = self.nameField.text; etc.... 

在最终的视图控制器,你可以访问这些属性上传到parsing。

尝试一下。

 let yourInstance = NSUserDefaults.standardUserDefaults().objectForKey("yourKey") NSUserDefaults.standardUserDefaults().synchronize()