それぞれ一連の uitextfields を持つ一連のビューコントローラーを持つ iPad アプリがあります。基本的に私ができるようにしたいのは、さまざまなビューコントローラーをナビゲートするときに、編集された各 uitextfield にテキストが残るようにすることです。特定のビューコントローラーを離れて戻ってくると、各 uitextfield が空になります。これを修正するには、viewWillDisappear または viewDidDisappear メソッドを呼び出しますか? もしそうなら、各テキストフィールド内に情報を保存するにはどうすればよいですか?
2 に答える
モーダルセグエをやっているだけですか?前のビューに戻りたい場合は、 を使用するだけで、[self dismissViewControllerAnimated:YES completion:nil]
以前に入力した内容がすべて残ります。テキストが表示されなくなるのは、最初のビューに戻った場合のみです。ただし、何らかの理由で最初のビューに戻る必要がある場合は、テキストを NSUserDefaults に保存してから、viewWillAppear に保存された値をフィールドに入力することができます。ただし、循環セグエを実行するよりも、常に viewController を無視することをお勧めします。
メソッドを悪用してshouldChangeCharactersInRange
、これまでに入力した文字を余分な文字列に保存し、viewcontroller を切り替えた後に復元することができます。
アップデート
ビュー内の各テキスト フィールドに対して、saveString を設定して関連付ける必要があります。タグ値を配列インデックスとして作成すると、次のようになります。
<UITextFieldDelegate>
クラスのインターフェース定義を追加する
各テキストフィールドのデリゲートをに設定しますself
このメソッドを追加
- (BOOL)textField:(UITextField *)textField shouldChangeCharactersInRange:(NSRange)range replacementString:(NSString *)string {
NSString *s = [textField replaceCharactersInRange:range withString:string];
NSLog(@"current textfield value '%@'", s);
// save s somwhere, e.g. to userdefaults or a DB table
return YES;
}
前のビューに切り替えた後、各テキストフィールドの以前の内容を復元できます。このメソッドがいつ呼び出されるかを確認できるように、NSLog() を入れました。