0

基本的なモーダル ビュー システムがあります。

私のアプリは、他の 2 つのビューを表示する 2 つのボタンがある UI ベースを読み込みます。これらのビューでは、却下ボタン。

すべて正常に動作します。

しかし、2 つのモーダル ビューの 1 つで、UISlider と UISwitch がたくさんあります。それらの値を保持したいのですが、却下するとそれらが失われます。ボタンをトリガーして UI 要素を含むビューを表示するとすぐに、最初に xib に入れたすべての要素のすべての値がこのビューに表示されます。

すべての値を変数に保存する必要がありますか?その後、viewWillAppear でそれらを「呼び出す」ことができますか?

別の戦略をアドバイスしてくれませんか?

4

2 に答える 2

2

はい、提案されたアプローチはまさに正しいものです。ただし、注意してください。viewWillAppear はさまざまな理由で呼び出すことができます。ビューコントローラーが存在し、初めてビューを表示するときにのみ、これを行っていることを確認してください。

NSUserDefaults は、このようなグローバルに必要な情報を保存するのに最適な場所です。viewWillDisappear で、目的の状態情報 (スライダーとスイッチの値) をデフォルトに保存します。次に、ビューが表示されようとしているときにそれらを取得します。

于 2012-04-13T21:37:00.997 に答える
2

モーダル ビューを作成すると、modalViewController と modalView の新しいインスタンスが作成されます。この新しいインスタンスは、他のインスタンスについて何も知りません。これらのモーダル ビュー コントローラーの以前の反復からの情報を保持する方法がいくつかあります。

方法: メイン ビューでプレース ホルダーを設定し、ユーザーが選択した値をプロトコルを介してメイン ビューに戻し、セットアップを委任します。次に、モーダル ビューに移動すると、モーダル ビューを表示する前にそれらの変数を読み込むことができます。

したがって、すべての値を持つ辞書があるとしましょう: {slider = YES, someValue=10,...} メイン ビュー コントローラーでその辞書を作成し、最初に開いたものにいくつかの既定値を配置します。

モーダル ビュー コントローラーで、プロパティと同じディクショナリを作成します。

次のようなメソッドを使用して、モーダル ビュー コントローラーにプロトコルを作成します。

- (void) doneEditing:(NSDictionary *)values

最初のビューをモーダル ビュー コントローラーのデリゲートとして設定し、モーダル ビューdoneEditingをポップする前に、最初のビューに存在するディクショナリに値をコピーします。

最初のビューでモーダル ビューを再び表示する準備ができたら、表示する前に値をモーダル ビューのディクショナリ プロパティにコピーします。

これがあなたを正しい方向に導くことを願っています。モーダル ビューをセグエまたは作成して提示するたびに、そのビューの新しいインスタンスを作成していることを覚えておくことが重要です。それについて何かを伝えない限り、前のインスタンスについてはまったく何も知りません。

于 2012-04-13T21:26:59.487 に答える