2013-03-07 62 views
0

我有两个UITextFields,它的输入存储为字符串player1player2。这些UITextFields位于由popOver segue调用的ViewController。如何在视图更改后让UITextFields继续显示文字?如何在视图更改时保留UITextField文本

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

+1

你可以发布任何代码尤其是,你如何创建这些文本字段 – dreamzor 2013-03-07 21:14:23

回答

1

如果您加载的视图的代理不是ViewController,那么您的代码将不会执行。因此,请确保您的代码位于加载视图的代理上。也使用[textFieldOne setText:player1]。调用setter方法总是更好,而不是直接设置伊娃。然后确保您的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"]; 
} 
+0

如果我使用的是'textFieldOne = [[的UITextField的alloc]初始化]'行?代码,当我尝试将文本放入'textFieldOne'时,我得到一个异常错误,但它仍然无法工作,但我不确定是否与该视图中的逻辑有关.DidLoad将两个textField设置为player1和player2在他们有任何存储在他们之前..钍我输入数据,并且我不确定当我重新打开ViewController时是否保存了这些变量。嗯,令人困惑。 – 2013-03-07 20:53:45

+1

转到[Gists](https://gist.github.com)上传您的完整代码。从这里很难说出来。或者更好的是,通过电子邮件将您的项目发送给[email protected] – Moray 2013-03-08 05:22:50

+0

我通过电子邮件向您发送了我的代码,非常感谢您的帮助 – 2013-03-08 16:54:09

相关问题