私は依存性注入についてStackOverflowのthisスレッドを読んできました。そして、トップ評価の答えによって与えられたアイデアを本当に熱心に使用しています。しかし、私は私のケースで働くようにそれらを拡張するのに問題があり、どこでも解決策を見てきましたが、運がなかった。一連のビューコントローラを通してユーザーの選択を保持する方法はありますか?
は、簡単に言うと私の状況を説明するために、私が持って言うことができます:
のViewController A - ユーザーが写真
のViewController B取り上げている - そして、ユーザは、色を選ぶいるが
のViewController C - イメージと色がユーザーに表示される
依存注入を使用して、写真が選択されたらViewController AがViewController Bをナビゲーションコントローラに押し込むように指定する方法を見ることができます選択された写真は? ViewController Cで表示するにはどうすればよいですか?
また、ViewController Bに、色を選択したときにViewController Cをプッシュする必要があることをどのように伝える必要がありますか?
私が考えることができる唯一の解決策は、上記のスレッドのアイデアに厳密に従っています。ViewController Aに設定された「写真」プロパティをNavigation Controllerにプッシュすることです。しかし、これは私にとっては「悪いアイデア」のように思えます。なぜなら、一般的なViewController Bは、人生の唯一の目的は色を選択して移動することなので、写真には何の関心も持たないはずです。私は2つの可能性が出ているこの問題を解決しようとする際に
:
1 /すべてViewControllersバック中央の代理人に報告してください。
これは、依存性注入スレッドが言っていることに直面しているように見えますが、それはまだ最も簡単な方法です。私。 ViewController Aは写真を選んでデリゲートにそのことを伝えます。デリゲートは写真を後で保存し、ViewController Bをナビゲーションコントローラにプッシュします。色が選択されると、色が保存され、ViewController Cがプッシュされ、前に保存された色と写真の値が渡されます。
2 /いくつかの種類のプロパティオブジェクトをコントローラ間で渡します。
プロパティは 'color'と 'photo'プロパティで作成し、ViewController Aに渡すことができます。photoプロパティはViewController Aで設定され、オブジェクトはViewController Bに渡されます。 colorプロパティを渡してからViewController Cに渡して表示します。
どちらのオプションも私には「OK」のように見えますが、どちらもかなり正しいとは感じません。
多分、私は完全に誤解された依存性注入、その場合は教えてください!さもなければ、上の考えはすごく大きいでしょう。
ありがとうございます!
デビッドクイック返信ありがとうございます。これは間違いなくこのように動作するかもしれませんが、各コントローラはそのインスタンスでのみ動作するようにプログラムする必要があります。例えば、CがnavコントローラのobjectAtIndex:0を見てAを見つけさせると、(例えば)Aの前に何かを表示したい行を決定することはできません。 objectAtIndex:1代わりに。私はちょうど良いと一般的なすべてを保つ私が従うことができる巧妙なデザインパターンが必要であることを意味します。 – Mason
CはAまたはBのインデックスを知る必要はありません。ナビゲーションコントローラに画像と色を尋ねます。たとえば、ナビゲーションコントローラには、-getPictureおよび-getColourのメソッドがあります。これらのメッセージをナビゲーションコントローラに送信すると、写真と色が返されます。ナビゲーションコントローラは、それぞれAとBから画像と色を取得する方法を知っています。 – David
ナビゲーションコントローラをサブクラス化していますか?私はこれが悪い考えだったと読んでいますか? – Mason