2017-01-28 10 views
0

サーバーから取得した設定に基づいて、実行時にコントロールを動的に作成する必要があります。私はMVVMパターンを利用しようとしています。iOS - MVVMで動的にコントロールを作成する

例を簡単にするために、サーバーからの設定に基づいて、すべての私は、Viewに独自の設定(色、フォントなど)を持つ各UILabelsN数を作成する必要が言うことができます。頭に浮かぶ

まず最初は、私のViewModellistUILabels性質を持っている、とViewModelUILabelオブジェクトの作成とそれらの属性/プロパティ(色、フォントなど)を設定するための責任があることです。 Viewため

View次いでだけでなくデータを提供する必要があり、私はいくつかの例では読み取りがViewModelUIKitを参照してはならないことを、それぞれself.view.addSubview()

介しを添加viewModel.listUILabelsUILabelを反復なり、特性&列挙(これについて自由にコメントしてください)。

MVVMルールを遵守するには、ロジックをどのように分割する必要がありますか、ビュー内には何が入りますか?この場合、ViewModelには何が入りますか?

答えて

1

私の意見では、あなたのViewクラスには、UILablesを作成し、設定の設定に基づいてUIの動作を設定するロジックが含まれているはずです。

ViewModelは、ユーザーの操作に基づいてデータが変更されたときに、データソース(モデル)とデータソース(モデル)のデータ変更を更新する必要がある、ビューを更新する基礎となるデータと対話するためのインターフェイス(もしあれば)。

0

基本的にViewModelは可能な限りViewで独立している必要があります。 1つのページに関連し、論理的に属しているデータの表現である必要がありますが、ビュー自体が実装または表現される方法に依存してはいけません。理想的には、ViewModelを変更することなく、ビューとそのレイアウトを変更することが可能でなければなりません。

ViewModelUILabelsのリストを含めず、ビューに表示する "データ"を格納するカスタムクラスのリストを入れてください。この場合、UI関連のデータを扱うため、これらのカスタムクラスのプロパティとして、色やフォントの属性を含めても問題はありません。

次に、ビュー自体でこのリストを確認し、提供されたデータに基づいて適切なコントロール(UILabels)を動的に作成することができます。

関連する問題