2016-03-23 20 views
0

私のUITextViewは、私の最初のUITextFieldにテキストの行を配置するとき、それが保持するテキストを保存しません。なぜ私のUITextFieldは保存されませんか?

HERESに私のコードは、これは私が現在保存し、情報をロードしようとしていますかのTextView

-(IBAction)print:(id)sender { 

NSLog(@"text = %@",[textView text]); 
NSArray *textArray = [[textView text] componentsSeparatedByString:@"\n"]; 


if (textArray.count > 0) { 
    NSString *line1 = textArray[0]; 
    [myTextField setText:line1]; 

    if (textArray.count > 1) { 
     NSString *line2 = textArray[1]; 
     [myTextField1 setText:line2]; 
    } 
} 


[textView setText:@""]; 
[textView resignFirstResponder]; 

} 

相続人から情報を移動することです。

- (void)viewDidLoad { 
[super viewDidLoad]; 

NSUserDefaults *defaults = [NSUserDefaults standardUserDefaults]; 

[myTextField setText:[defaults valueForKey:@"textfield_text"]]; 
[myTextField setDelegate:self]; 

} 

- (void)textFieldDidEndEditing:(UITextField *)textField { 

NSUserDefaults *defaults = [NSUserDefaults standardUserDefaults]; 

NSString *defaultsKeyForTextField; 

if ([textField isEqual:myTextField]) { 

    defaultsKeyForTextField = @"textfield_text"; 

} 
[defaults setValue:textField.text forKey:defaultsKeyForTextField]; 
[defaults synchronize]; 
} 

私はテキストを手動で入力するとテキストが保存されるだけです。

+6

'textFieldDidEndEditing'は、テキストフィールドが最初のレスポンダを辞任したときにのみ呼び出されます。 – TangZijian

+0

あなたは何かがあなたが欲しい方法を行っていないと感じるたびに、ブレークポイントを置き、コードをデバッグする必要があります。 POコマンドを使ってコンソールの特定の値を印刷することもできます。 – Ujjwal

+0

なぜあなたはviewdidloadにもuserdefaultを保存していますか? –

答えて

0

ユーザーTangZijianが指摘したように、テキストフィールドがファーストレスポンダを辞任する場合、textFieldDidEndEditingが呼び出されます。

printのコードはありません。
テキストフィールドを最初のレスポンダとして設定してすぐに辞めると、悪い考えのように見えるので、textFieldDidEndEditingのコードをprintに移動できます。

-(IBAction)print:(id)sender { 
    NSLog(@"text = %@",[textView text]); 
    NSArray *textArray = [[textView text] componentsSeparatedByString:@"\n"]; 

    NSUserDefaults *defaults = [NSUserDefaults standardUserDefaults]; 

    NSString *defaultsKeyForTextField; 

    if (textArray.count > 0) { 
     NSString *line1 = textArray[0]; 
     [myTextField setText:line1]; 

     defaultsKeyForTextField = @"textfield_text"; 
     [defaults setValue:textField.text forKey:defaultsKeyForTextField]; 
     [defaults synchronize]; 

     if (textArray.count > 1) { 
      NSString *line2 = textArray[1]; 
      [myTextField1 setText:line2]; 
     } 
    } 
    [textView setText:@""]; 
    [textView resignFirstResponder]; 
} 
+0

私は実際に前にそれを疲れて、それは働かなかったが、今度はうまくいった。どうもありがとう。 – vype

0

テキストフィールド値の変更を検出するには、変更変更イベントを使用する必要があると思います。これをあなたのviewDidLoadメソッドに入れてください。

[myTextField addTarget:self 
      action:@selector(textFieldDidChange:) 
      forControlEvents:UIControlEventEditingChanged]; 

は、その後にコードを変更:

- (void)textFieldDidChange:(UITextField *)textField { 

    NSUserDefaults *defaults = [NSUserDefaults standardUserDefaults]; 
    NSString *defaultsKeyForTextField; 

    if ([textField isEqual:myTextField]) { 

     defaultsKeyForTextField = @"textfield_text"; 

    } 
    [defaults setValue:textField.text forKey:defaultsKeyForTextField]; 
    [defaults synchronize]; 
} 
+0

まだ運と保存はありません。 – vype

+0

私はログに入れて、ロードしているようだが保存していないようだ。 – vype

関連する問題