2016-05-12 13 views
5

モデルビューのプレゼンターアーキテクチャを新しいiOSプロジェクトに適用する方法を検討しました。いくつかの読書の後、私はこのpostが最良の例を持っていたことがわかりました。コードhereの生の要点にリンクしてください。モデルビュープレゼンターとiOS(スウィフト)アーキテクチャー

例の底がアセンブリコードがあります。

// Assembling of MVP 
let model = Person(firstName: "David", lastName: "Blaine") 
let view = GreetingViewController() 
let presenter = GreetingPresenter(view: view, person: model) 
view.presenter = presenter 

さらに、著者の状態:私たちは、ビューモデルについて知りたくないので

を、それView Controllerをプレゼンテーションする際にアセンブリを実行するのは適切ではないため、別の場所で行う必要があります。たとえば、アセンブリ全体の実行とView-to-Viewプレゼンテーションを担当するアプリケーション全体のRouterサービスを作成できます。

私の質問:

  • 私はアセンブリコードを置く必要がありますか?
  • アプリ全体の具体例はルータですか?

答えて

1

だから、私だけこの疑問を抱いた人ではありません。)

は私があなたとのiOSでMVPにについての私の他の発見を共有しましょう:

Screencast by David Gadd - それは、(1時間の20分)少し長いですと少し古い(2012年12月)しかし確かに見る価値がある。あなたは非常に小さなアプリケーションのために(どのようにユニットテストを書くかについてのかなり良い説明と一緒に)MVPが(AppCodeで)どのように実装されているかを見るでしょう。デビッドが作成中のアプリケーションのルータは、ServiceLocatorと呼ばれます。残念ながら、私はこのスクリーンキャストのためにダウンロードするコードを見つけることができませんでした(しかし、それを見ながらこのアプリの独自のバージョンを作成することは可能です)。

ルータを作成するには他にも方法がありますが、このスクリーンキャストはもう少し理解しやすくなりました。私はMVPのコンセプトにはかなり新しく、より大きなアプリケーション(それはよりも大きく、1画面で見てみる方法で完了したアプリより大きい)で使用しませんでした。 ... MVPは、実際の生活のアプリで実装されましたか

を見て、私はちょうど私があなたの最初の質問に答えていない実現しました[EDIT]

素晴らしいことです。あなたは、単純なスイッチが付いています。このメソッドの実装では

+ (id)resolve:(PresenterTypeEnum)type; 

:スクリーンキャストルータでアプリによると

は、1つのクラスメソッドを持つクラスです。 タイプをパラメータメソッドで送信すると、プレゼンターの適切なインスタンスが返されます。

このメソッドは、viewDidLoadで呼び出されます。プレゼンターのインスタンスを取得したら、プレゼンターのビューを自分で設定するだけで済みます。

私はこの説明がはっきりしていることを望みます。とにかく、私は強くスクリーンのキャストを見て、次にそれはクリスタルとして明らかにする必要があります;)

関連する問題