好吧,最后我想要一个程序,用户可以输入简单的数据,如姓名,出生日期,地址等,然后让这些信息保持多个视图。我让用户输入他们的信息作为UITextFields,但他们是用于输入数据的多个视图。有没有一种方法,当用户在UITextField中输入数据 - 然后移动到另一个视图 - 然后返回到原始视图 - 数据仍将在该UITextField中?我想因为有占位符,当调用viewController时必须有一个命令来显示该字段中的先前写入的文本。
另外,对于我的生活,我无法弄清楚如何将这些变量保持全局。我已经阅读了多个领域,我应该在AppDelegate中将它们定义为一个简单的:
NSString *userName;
NSString *userDOB;
但是如何在不同视图中将UITextFields中的字符串分配给这些变量,然后在用户返回到最初输入它们的位置时将它们重新分配给UITextFields?
(如果我没有连贯地解释这一点,我道歉 - 我有点新手)
CNC中 我已经按照下面的链接,但仍然无法弄清楚这一点。我尝试使用:
NSString *name = [[NSUserDefaults standardUserDefaults]objectForKey:@"name"];
[[NSUserDefaults standardUserDefaults] setObject:@“Horace”forKey:@“name”];
但我不能在正确的地方使用它们。我在哪里使用这个命令?如果我让用户在“ViewController1”中输入变量 - 我应该将这些命令放在“ViewController1.m”文件中的某个位置吗?对于我的生活,我无法弄清楚这一点。
答案 0 :(得分:3)
App Delegate或NSUserDefaults是全局值的好选项,具体取决于您对它们的处理方式,并经常跳转它们。您可以重载此方法以获得所需内容:
- (无效)viewDidAppear:(BOOL)动画
例如:
-(void)viewDidAppear:(BOOL)animated {
[super viewDidAppear:animated];
MyProjectAppDelegate* appDelegate = (MyProjectAppDelegate*)[[UIApplication sharedApplication] delegate];
userNameTextField.text = appDelegate.userName;
userDOBTextField.text = appDelegate.userDOB;
}
出现此视图时,它将从App Delegate加载值。
第二个选项是保持对视图控制器的引用,可能再次在App Delegate中。然后,只要您想在视图之间移动,只需根据需要添加和删除视图。不要每次都分配/初始化它,只有第一个。
答案 1 :(得分:0)
认为你有两个问题:
第一个我认为我可以轻松回答。如果每个视图有一个控制器,这是推荐的做法。那么通常你会在该视图上拥有属性,你可以通过IBOutlet链接UITextFields。在手动执行此操作或从内存中擦除视图之前,不会清除该数据。因此,您不必担心锣到另一个视图并回来。您的数据将被保留。
第二个问题更难,因为有很多方法。我自己在这个问题上没有多少经验,但是我看到的是替代方案:
答案 2 :(得分:0)
您可以参考之前的question。 [NSUserDefaults standardUserDefaults]
是一种选择。