我正在创建一个用户设置帐户使用故事板的5个步骤。每个步骤都有一个ViewController:1:)输入姓名、联系人等,2:)导入照片,3:)输入等4:)更多输入5:)确认页面,如果用户点击“确认”->获取所有输入并上传解析。
我在网上搜索时得到的唯一解决方案是创建一个函数“Prepare for Segue”并传递信息...但对我来说,这没有任何意义:
如果我有1000个viewcontroller,第一个viewcontroller信息将通过所有1000个viewcontroller传递?为什么不让1000视图控制器获取遗留下来的所有信息呢?例如:viewcontroller N:50不需要关于viewcontroller N:1的信息...这是胡说八道。
这有没有其他的办法来实施呢?
也许有一个解决方案,因为我正在使用解析,就像我做的那样:
ParseClass[“name”]=textfield.text
它将信息发送给Parse,然后它们保存这些信息,直到我执行类似SaveInBackground()的操作。
我正在尝试使用ViewControllers找到类似这样的解决方案。每个viewcontroller发送信息来解析并保存这些信息,直到在viewcontroller上发生“saveInbackground()”。
可能?谢谢
是的。有可能。您可以使用nsuserdefaults
将您的信息存储到内存中,一旦存储了信息,您就可以在项目中的任何地方使用它。
就像你可以用它来储存价值:
NSUserDefaults.standardUserDefaults().setObject(yourObject, forKey: "yourKey")
现在,您可以使用您的密钥从任何地方检索此信息,如下所示:
let yourInstance = NSUserDefaults.standardUserDefaults().objectForKey("yourKey")
您可以根据需要转换它的类型。
欲知更多信息,请阅读Apple的NSUserDefaults文档。
通过使用class
或struct
将值从一个视图传递到另一个视图而不需要segue的另一种方法。
您可以从Apple文档中阅读关于类
和结构
的更多信息。
如果我们的输入是有限的,则创建一个模型类,并为其提供如下属性:
@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....
在final view controller中,您可以访问这些属性以便上载和解析。
试试看。
let yourInstance = NSUserDefaults.standardUserDefaults().objectForKey("yourKey")
NSUserDefaults.standardUserDefaults().synchronize()