0

私のアプリでは、ナビゲーションコントローラーを使用しています。私の問題は、前のビューに移動してから現在のビューに戻ると、このビューのすべてのTextFieldが空になることです。

ナビゲーションコントローラーからスタックをナビゲートするときに、これらの値を(テキストフィールドに)保存する方法がわかりません。

これは、popViewControllerAnimatedを呼び出す私のメソッドです。

- (IBAction)swipeBack:(id)sender {
    [self.navigationController popViewControllerAnimated:YES];
}
4

4 に答える 4

1

ビューコントローラをプッシュまたはポップすると、それぞれメモリにロードまたはアンロードされます。コントローラをポップする前に情報を保存し、新しいコントローラを割り当てた後、スタックにプッシュする前に情報をロードする必要があります。NSUserDefaultsまたは基本ファイルI/Oを使用して、情報を保存および再ロードできます。

保存:

  • 上記の方法のいずれかを使用してデータを保存します。
  • 次に、ViewControllerをポップします。

読み込み中:

  • データをロードします。
  • ビューコントローラを割り当てます。
  • データをViewControllerに渡します(プロパティ、シングルトンなどを使用)
  • ビューコントローラを押します。
于 2012-06-18T13:55:36.130 に答える
1

前のビューの.hファイルで、プロパティを宣言します。

@property (noonatomic, retain) YOURVIEWCONTROLLER *secondVC;

次に、@implementationでプロパティを合成します。

@synthesize secondVC;

次に、ViewControllerをモーダルビューとして表示しているコードを次のように置き換えます。

if(!secondVC){
    YOURVIEWCONTROLLER *controller=[[YOURVIEWCONTROLLER alloc]init.......];
    [self setSecondVC:controller];
    [controller release];//if you ain't using arc else just set it to nil
    controller=nil;
}
[self presentModalViewController:self.secondVC animated:YES];

'YOURVIEWCONTROLLER'は、テキストフィールドを含む2番目のViewコントローラーのクラスの名前です。-deallocでsecondVCプロパティを解放することを忘れないでください。お役に立てば幸いです。

于 2012-06-19T10:12:49.993 に答える
0

ここで取り組むべき2つのことがあります:1。テキストフィールドの内容を保存します。2. View Controllerをもう一度押したときに、テキストフィールドの内容を復元します。

テキストフィールドの値をAppDelegateやその他のグローバルシングルトンなどのグローバルオブジェクトに保存することで解決できる最初の問題。

2を処理する最良の方法は、テキストフィールドを使用してViewControllerの初期化子を作成することです。例えば:

- (id)initWithOptions:(NSDictionary*)options;

次に、コントローラーをスタックにプッシュする必要がある場合は、以前に保存した値を1からグローバルストレージから取得し、オプションディクショナリに渡します。次に、viewDidLoadで、フィールドに値を割り当てます。

于 2012-06-18T13:56:04.257 に答える
0

保管する物件に設定してみませんか?プッシュして表示したい場合は、nilメンバーの場合のみ割り当てることができます。

于 2012-06-18T14:30:46.100 に答える