2011-07-26 7 views
0

UITextFieldのコードは次のとおりです。私が持っている問題は、テキストが残らないということです。たとえば、モーダルビューを表示してからそれを閉じた場合、UITextFieldにはテキストは含まれません。テキストフィールドでそのビューを縮小するまで、テキストをそのまま残しておきます。UITextFieldとNSStringに問題がある

私はこのようなUITextFieldを表示しています:

UITextField *nameTextField = [[UITextField alloc] initWithFrame:CGRectMake(110, 10, 185, 30)]; 
nameTextField.delegate = self; 
[nameTextField addTarget:self action:@selector(editingEnded) forControlEvents:UIControlEventEditingDidEnd]; 
[nameTextField setEnabled: YES]; 
self.myTextField = nameTextField; 
[nameTextField release]; 

は、次に私が持っている:

- (void)editingEnded 
{ 
    NSString *tempRoutineName = self.myTextField.text; 
    self.routineName = tempRoutineName; 
    [tempRoutineName release]; 
} 

答えて

3

代わりのeditingEnded、UITextFieldDelegateプロトコルを実装します。 textFieldDidEndEditingメソッドに移動し、テキストの値を再割り当てします。

と同様に、

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

if (textField.tag ==0){ 
    self.myTextField = textField; 

    // myTextField is a property 
    } 

viewDidLoad法や viewWillAppear方法では、先に行くと戻ってテキストフィールドにこの値を割り当てるには。

テーブルビューで使用する場合は、必要に応じて[tableView reloadData]を使用するか、[self reloadInputViews](必要な場合)を使用してください。

もう一度、そのすべての論理。複雑すぎるコードではありません。編集は私の意見で

+0

UITextFieldがUITableViewCellにあるので、私が投稿したコードの最初のチャンクは実際configureCellメソッドにあります。したがって、あなたはviewDidLoadでこのことをやっていますか? – Jon

+0

番号'cellForRowAtIndexPath'メソッドで、テキストフィールドを初期化します。 – Legolas

+0

'selfCyyTextField = textField'は' textCield'メソッドで 'textFieldが宣言されているのでできません。 – Jon

0

使用UITextFieldDelegate方法は、:

NSString *tempRoutineName = self.myTextField.text; 
self.routineName = tempRoutineName; 
[tempRoutineName release]; 

あなたは解放するtempRoutineNameを所有していません。リリースとチェックをコメントアウトしてください。

0

を終了するときに呼び出されるtextFieldDidEndEditingある