0

私のアプリの最初のビューはUITableViewです。

ユーザーはオプションを選択し、次のビューは別のUITableViewになります。これで、ユーザーは「追加」ボタンをタップして別のUIViewControllerに移動し、UITextFieldにテキストを入力できます。そのテキストは、保存時に前のUITableViewCellに表示されます。

私が抱えている問題:メインビューに戻ってから以前の場所に戻ると、入力されたテキストは失われます。

テキストがこのようにリリースまたは非表示になっていないことを確認するにはどうすればよいですか?

4

3 に答える 3

1

この配列は、MVC (データ モデル) など、プロジェクト内の別の場所に保存することができます。クラスを介して情報を渡し、配列を1か所に格納する新しいクラスを作成できます。次に、配列に追加したら、そのクラスを参照し、そのクラスのメソッドを呼び出して、テキストを配列に格納し、テーブル ビューをロードするたびに、その配列をクラスにロードします。

私の場合、これを行いますが、すべてのクラス メソッド (プロパティや ivar にアクセスできない場合) を作成し、配列をユーザーの既定値/Web サービスまたは必要な場所に格納し、このように取得して追加/返すだけです。 :

+ (NSMutableArray *)arrayOfSavedData {

    return [[NSUserDefaults standardUserDefaults] objectForKey: @"savedData"];
}

+ (void)addStringToArray: (NSString *)stringFromTextField {

   [[[[NSUserDefaults standardUserDefaults] objectForKey: @"savedData"] mutableCopy] addObject: stringFromTextField];

}

mutableCopyユーザーのデフォルトに格納した後、配列は可変のままではないため、この部分は重要です。

于 2012-12-22T02:47:09.140 に答える
0

テキストがなくなった理由は、おそらく元の場所に戻ったときに新しいコントローラーをインスタンス化しているためです。コントローラーへの強力な参照を保持し、まだ存在しない場合にのみインスタンス化できます。これを行う正確な方法は、コントローラー間をどのように移動しているかによって異なります。たとえば、コードで実行しているか、ストーリーボードを使用しているかによって異なります。

于 2012-12-22T04:30:04.707 に答える
0

この種の問題は非常に頻繁に発生します。複数のコントローラーとビューを移動する場合。

新しいビューをロードし、コントローラーが割り当て+初期化されるたびに、新しい値のセットが割り当てられ、以前の値は使用されません!!!.

SharedInstance/SingletonClass を使用して、割り当てと割り当てが一度行われ、新しい値のセットで再作成されないようにすることができます。

于 2012-12-22T05:13:40.187 に答える