2010-12-06 20 views
0

UIViewControllerのビューに表示される情報を管理または決定する複雑なタスクをハイブにして、実際にはサブビューとそのレイアウトを "UIViewController delegate"にロードすることには関係しませんあった?UIViewControllers、代理人

[例として、ゲームのデリゲートとフルスクリーンのゲームビューコントローラがあります(そのビューはプログラムによって作成されています)。アプリケーションデリゲートは、ゲームビューコントローラについて知っているゲームデリゲートについて知っているかもしれません。]

答えて

1

あなたの記述は、iOS上ですでに頻繁に使用されているMVCデザインパターンに基本的に焼き付けられます。

ネットワークトラフィックを視覚化するアプリケーションを考えてみましょう。継続的に更新するグラフをNミリ秒ごとにレンダリングするビューがあります。グラフのプロットを決定する基本的な計算は複雑で、何百回も起こるかもしれませんが、UIを1秒間に30回しか更新したくない場合もあります。

この仮説的なアプリケーションでは、生のネットワークトラフィックを監視し、計算をModelクラスで実行するすべてのコードを記述することができます。次に、使用しているMVCの種類に応じて、モデルを直接(おそらくKVOを使用して)変更したり、コントローラがモデルを観察してから、ビューの更新を直接トリガするようにします新しい状態で

+0

私はこれを抽象的にしていますが、実際にはこれを別の言い方で終わらせてしまう傾向があります。私が理解し、私の質問の言語では、 "MVC"の "M"はゲームデリゲート、 "V"は "ゲームの表示"、 "MVC"の "C"はビューコントローラがゲームデリゲートとゲームビュー。例えば、GameDelegateではなく、View Controllerヘッダーで「GameModel」クラスを宣言すると、他の人が自分のコードを理解しやすくなります。違いは意味的ですが重要です。 – SK9

+0

はい、意味の違いはここでは非常に重要です。なぜなら(私にとっては)あなたはMVCパターンの用語をDelegateパターンと混合しているからです。私はあなたの質問にはっきりとはっきりしません。最後のビットを選んでみましょう。 'GameDelegate'クラスを持っていれば、それはDelegateパターンの使い方と、その振る舞いのいくつかを守る' Game'オブジェクトの存在を意味します。私はこれがあなたが意図しているとは思わない。 'UITableView'と' UITableViewDataSource'のようなデリゲートを考えてみましょう。テーブルビューはそれを設定するために使います。 –

+0

これは良い例です。私のGameDelegateは実際にGameViewのデータソースとして機能しています。たとえば、ゲームスコアラベルのテキストをデータソースの要素にバインドする必要があります。あなたが推測したように、私はプログラム的にすべてをやっています。私はキーワードについてもう一度IBを見るべきです。 – SK9