2009-05-29 27 views
2

私はCocoaとiPhoneプログラミングには全く新しいものです。Cocoa Touch Appアーキテクチャ - MVCコントローラ?

私が持っているシンプルなアプリ実装するためのXcode ユーティリティアプリケーションテンプレート使用しています

  • 接続ボタンを持つユーザ名
  • ビューを収集するテキストフィールドとの見解を ユーザー名を使用してリモートサイトへの接続を開始し、HTTP経由でデータを取得します。データは画面上にテキスト文字列として表示されます。

これは私のを表示すると思います。のMVCパターンです。

ユーザー名を格納するためのシンプルなクラスを作成し、MODELを表すすべての接続作業を行い、AppDelegate内でインスタンス化しました。ここで

本当に単純化スケッチ:

simplified sketch

私が深いサブビュー(ユーザー名)にネストされたデータを取得することができますどのように私には本当に明確ではないか、どのように私は、ネストされた親ビュー内のアクションをトリガすることができます(接続ボタン)。

私の質問は:

このアーキテクチャを実装するための最良/クリーンな方法は何ですか?

にはどうすればCONTROLLERを実装していますか?コメントに基づいて私の答えを更新

任意の助けを事前に感謝し、
Paull

答えて

2

それはあなたのコントローラの状態を持ってしても大丈夫ほとんどの場合です。どのようなモデルオブジェクトの配列やインスタンスのように、アプリケーションを記述しています。

私はモデルオブジェクトをネットワークコードからきれいにして、代わりにコントローラーに入れます。この場合、その接続アクションがトリガーされるViewController。

オリジナルの答え:

私がデータを サブビュー(ユーザー名)または私はネストされた親でアクションをトリガー ことができる方法の中に深く入れ子に取得 することができますどのように私には本当に明確ではない ビュー(接続ボタン)。

ユーティリティアプリケーションテンプレートでは、すでに2つのViewControllerがあります。

コントローラ内のUIへの参照を取得するには、IBOutletsを宣言し、Interface Builder内でそれらを接続する必要があります。アクションに応答するには、ViewControllerでIBActionsを宣言して実装し、Interface Builderでそれらをフックする必要があります。インスペクタのConnectionsペイン(左から2番目)で行うことができます。

+0

私はIBOutletsとIBActionsを使用して、UI要素を直接の親ビューコントローラにリンクすることができます。私は、モデルオブジェクトを含むApp Delegateまで上位のコンテナにデータを伝播する方法を理解していません... – Paull

+0

アプリケーションデリゲートの状態やデータを保持することはできますが、常に利用できるので、良いアーキテクチャではありません([NSApplicationデリゲート])、これは非常に簡単にこのグローバルオブジェクト、すなわち、再使用不可能です。小規模なアプリケーションでは問題ありません。 – monowerker

+0

答えをありがとう! 私の単純なアプリケーションでは、両方のサブビュー(テキストフィールドと接続ボタン+ラベル)に到達できるように、ルートコントローラ内にモデルインスタンスを置くことができます。私はあなたが提案したようにネットワークをきれいにするでしょう。 実際にネストされたビューを使用して、より複雑なアーキテクチャに対処する方法を知りました。 アプリ全体からアクセスできるようにシングルトンモデルが必要ですか? (私はこのアプローチが嫌いです) 親ビューメソッドを呼び出すか、何らかのイベント通知を送信して、データを一番下から上に伝播する必要がありますか? – Paull

関連する問題