-1

ビューを持つタブバーコントローラーの基本的に存在するアプリがあるとしましょう。ビューの 1 つには、モーダル ビュー コントローラーを表示するボタンがあります。このビューコントローラーの目的は、名前などのデータを入力することです。開始を押すと記録が開始されるため、時間への参照も保持され、記録時間の合計が表示されます。

(開始ボタンをクリックすると、ボタンが停止ボタンに変わります)

記録中にユーザーが閉じるボタンをクリックすると、viewcontroller (名前や記録時間などの変数を保持) が閉じられ、アプリはビューを含む tabbarcontroller に戻ります。ユーザーが記録中にボタン (モーダル ViewController を表示) をもう一度押すと、以前に入力したデータ (名前、記録時間の合計) とともに ViewController を表示する必要があります。

したがって、このデータは、次のコードの実行後も維持する必要があります。

- (IBAction)close:(id)sender {
     [[self presentingViewController] dismissViewControllerAnimated:YES completion:nil];
}

上記のコードは、viewcontroller を閉じますが、その viewcontroller 内の変数も破棄します。ビューコントローラーを閉じた後、そのビューコントローラーに入力された変数を保持する最良の方法は何でしょうか?

tabbarcontroller のビューがこのデータを担当する必要がありますか? または、モーダルビューコントローラーへの参照を保持し、バックグラウンドで有効にする必要がありますか? そして、コードでこれを行うにはどうすればよいですか?

最後に、ユーザーがモーダル ビュー コントローラーの停止ボタンをクリックして記録を停止し、閉じるボタンを押すと、もちろんメモリを保持するためにこのビューを破棄する必要があります。

4

4 に答える 4

1

のインスタンス全体を保存する場合はViewController、割り当て解除メソッドを使用して Singleton クラスを作成する必要があります。

-(void)dealloc {
   abort();
}

しかし、そこからいくつかの情報だけを保存したいと思います。viewWillDissapearそこに呼び出されたメソッド antを使用してtopViewController(ベースのアプリで)それを渡しUINavigationController、いくつかの変数を宛先に割り当てることができます。

また、コントローラーを閉じるときに、シングルトンデータモデルを使用してこれに値を割り当てることもできます。

私がお勧めするのは、dataModel を ViewController から別のクラスに強く分離することです。

于 2013-11-12T16:18:26.853 に答える
1

2 単語 - デリゲート パターン

物事を分けるのは良いことです。コントローラーが何らかのデータを作成することになっている場合は、1 つのメソッドでプロトコルを定義します。

-(void)controller:(MYController *)controller didEnterData:(MYDataWrapper *)data;

ユーザーが をタップcloseすると、デリゲートにメッセージが送信されます。コントローラーを作成するときに、デリゲートを設定します。単純。

于 2013-11-12T16:46:08.833 に答える
-1

ビューが閉じられる前に NSUserDefaults を使用して必要なデータを保存し、ビューがロードされたときに NSUserDefaults を使用してデータを取得できます。

于 2013-11-12T16:24:57.013 に答える