2013-03-07 64 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

相關問題