仅仅因为数据是在“同一个文件”并不意味着任何东西在运行时应用:当前一个共享模型对象积累。您仍然在创建RegistrationViewController
类的多个单独实例。因此,您需要在这些单独的实例之间传递数据,就像完全不同的类一样。
由于您使用的是故事板和segues,因此方法-prepareForSegue:sender:
是一个很好的考虑这样做的地方。
为了记录在案,我同意@ dasblinkenlight的建议,存储在模型对象,而不是单个字段这个数据,但使用“共享实例”如果你没有不同意。通过模型对象的一个例子是这样的:
User.h
@property (nonatomic, strong) NSString *fname;
@property (nonatomic, strong) NSString *lname;
@property (nonatomic, strong) NSString *email;
RegistrationViewController.h
@property (nonatomic, strong) User *user;
RegistrationViewController.m
- (void)prepareForSegue:(UIStoryboardSegue *)segue sender:(id)sender {
RegistrationViewController *nextViewController = (RegistrationViewController *)segue.destinationViewController;
nextViewController.user = self.user;
}
- (IBAction)doSaveAction:(id)sender {
NSLog("email: %@", self.user.email;
}
感谢您的建议。您正确使用共享实例是一个正确的选择。你能给我一个简单的想法,告诉我如何创建一个共享实例,以便它可以适用于所有这三个viewcontollers。我创建了一个新的“AllUsers.h”(NSObject)类文件。 – Jimmy
我使用的是Objective-C语言。 – Jimmy
@Jimmy对不起,我错过了Objective-C部分。 [这是一个在Objective-C中使用单例模型的例子Q&A](http://stackoverflow.com/a/11945106/335858)。这是相当复杂的,但它本质上是一个复制粘贴练习。 – dasblinkenlight