在导航后,将数据保持在UITextFields中

时间:2014-07-03 13:31:12

标签: ios objective-c uinavigationcontroller uitextfield

我在FirstView中为多个UITextFields制作了一个用于注册目的的应用。

我在应用中不断修改帐户功能。出于修改帐户的目的,我需要将用户导航到注册页面。但无论用户在Name, Date of Birth, Mobile Number等字段中输入的数据在导航后都没有出现在那里。我需要保留UITextFields中的数据。这是我第一次面对这个issue.help我解决这个问题。

提前感谢所有人

2 个答案:

答案 0 :(得分:0)

每当你创造&推送到ViewController,该ViewController中的所有数据都将被清除。您必须将新值传递给该ViewController,并且必须在推送后重新分配值。

FirstView *first = [[FirstView alloc] init];
first.name = @"My Name";
first.age = @20;
[self.navigationController pushViewController:first animated:YES];

.h文件

@interface FirstView : UIViewController{
    UITextField *nameField;
    UITextField *ageField;
}

@property (nonatomic, strong) NSString *name;
@property (nonatomic, strong) NSString *age;

@end

.m文件

- (void)viewDidLoad
{
    nameField.text = self.name;
    ageField.text = self.age;

    [super viewDidLoad];
    // Do any additional setup after loading the view.
}

答案 1 :(得分:0)

解决此问题的一种方法是将UITextField值存储在NSUserDefaults中。这将存储值,您可以再次访问它们(实际上是从代码中的任何位置)。

假设您的UITextField名为ageTextField,您可以这样做来存储文本:

[[NSUserDefaults standardUserDefaults] setObject:ageTextField.text forKey:@"age"];

要将值返回到您的UITextField,您可以在viewWillAppear中执行此操作(以防它永远不会留下内存)

ageTextField.text = [[NSUserDefaults standardUserDefaults] objectForKey:@"age"];

只是旁注。我通常会制作那些NSUserDefaults键常量(即kAge),这样你就不会错误地键入它们并在其他地方访问它们。