我有两个 UITextFields
,我将其输入存储到字符串 player1
和 player2
中。这些 UITextFields
位于由 popOver segue 调用的 ViewController
上。 View 更改后,如何使 UITextFields
继续显示其文本?
我在ViewController
的viewDidLoad
部分尝试了textFieldOne.text = player1;
,但没有成功。有什么想法吗?
最佳答案
如果您加载的 View 的委托(delegate)不是ViewController
,您的代码将不会被执行。因此,请确保您的代码位于已加载 View 的委托(delegate)上。还可以使用[textFieldOne setText:player1]
。调用 setter 方法总是比直接设置 ivar 更好。然后确保您的 UITextField
不为零并且已正确绑定(bind)。使用 textFieldOne = [[UITextField alloc] init]
对其进行初始化。如果问题仍然存在,请尝试[textFieldOne setText:self.player1]
。希望它有帮助..
编辑:
在这里得到了解决方案。您应该使用 NSUserDefaults
以便存储您的玩家名称,并且可以在每个 View 中使用,甚至在重新打开应用程序后也可以使用(如果您不希望这样,您可以在午餐时删除默认值。这里是您需要更改的一堆代码:
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"];
}
关于ios - 如何在 View 更改时保留 UITextField 文本,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/15280280/