如何在视图更改时保留UITextField文本

时间:2013-03-07 19:43:41

标签: ios objective-c xcode uitextfield

我有两个UITextFields,其输入存储在字符串player1player2中。这些UITextFields位于由popOver segue调用的ViewController上。如何在视图发生变化后让UITextFields继续显示文字?

我在textFieldOne.text = player1;的{​​{1}}部分尝试viewDidLoad无效。有什么想法吗?

1 个答案:

答案 0 :(得分:1)

如果加载的视图的委托不是ViewController,则不会执行您的代码。因此,请确保您的代码位于已加载视图的委托上。也可以[textFieldOne setText:player1]使用。调用setter方法而不是直接设置ivar总是更好。然后确保您的UITextField不是零且正确绑定。使用textFieldOne = [[UITextField alloc] init]初始化它。如果问题仍然存在,请尝试[textFieldOne setText:self.player1]。希望它有所帮助..

编辑: 得到了解决方案。您应该使用NSUserDefaults以便存储您的播放器名称,并且可以在每个视图中使用,甚至在重新打开您的应用后(如果您不想这样,您可以在午餐时删除默认值。这是您的一堆您需要更改的代码:

hardOne.m:

- (void)viewDidLoad
{
[super viewDidLoad];
[hard1ON setOn:switchState animated:NO];
//read player names to user defaults
[textFieldOne setText:[[NSUserDefaults standardUserDefaults] stringForKey:@"player1"]]; 
[textFieldTwo setText:[[NSUserDefaults standardUserDefaults] stringForKey:@"player2"]];
}

- (IBAction) returnKey1
{
player1 = [textFieldOne text];
[players addObject:(player1)];
//set player1's name to user defaults
[[NSUserDefaults standardUserDefaults] setValue:[textFieldOne text] forKey:@"player1"];
}

- (IBAction) returnKey2
{
player2 = [textFieldTwo text];
[players addObject:(player2)];
NSLog(@"array: %@",players);
//set player2's name to user defaults
[[NSUserDefaults standardUserDefaults] setValue:[textFieldTwo text] forKey:@"player2"];
}