0

2 つUITextFieldsの があり、その入力を文字列player1とに保存しますplayer2。これらUITextFieldsViewController、popOver セグエによって呼び出されます。UITextFieldsビューが変更された後、テキストを表示し続けるにはどうすればよいですか?

無駄のセクションで試してみtextFieldOne.text = player1;ました。何か案は?viewDidLoadViewController

4

1 に答える 1

1

読み込まれたビューのデリゲートが でないViewController場合、コードは実行されません。したがって、コードが読み込まれたビューのデリゲートにあることを確認してください。も使用します[textFieldOne setText:player1]。ivar を直接設定するのではなく、setter メソッドを呼び出す方が常に優れています。次に、 yourUITextFieldが nil ではなく、正しくバインドされていることを確認してください。を使用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"];
}
于 2013-03-07T20:20:20.987 に答える