我有两个UITextFields,它们的输入存储在字符串player1player2中。这些UITextFields位于由popOver segue调用的ViewController上。更改视图后,如何使UITextFields继续显示其文本?

我在textFieldOne.text = player1;viewDidLoad部分尝试了ViewController无济于事。有任何想法吗?

最佳答案

如果加载的视图的委托不是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"];
}

关于ios - View 更改时如何保留UITextField文本,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/15280280/

10-13 04:28