2016-08-09 6 views
1

ほとんどのViewControllerにはtableviewがあり、データソースが大きすぎます。 viewModelにもセルに必要なモデルがあるため、データソースをviewModelに移動できますか?tableviewのデータソースをviewModelにバインドできますか?

+0

はいそれを分割することができます。あなたは、あなたのデータソースまたはデリゲートとして作り、モデル化することができます。 – Sabby

答えて

1

わかりましたかわかりません。あなたは、ViewControllerとは異なるクラスにtableViewのdataSourceを設定したいのですか?

これは可能です。まず、クラスがUITableViewDataSourceプロトコルに準拠していることを確認します。このようにいろいろ書い:

// In Swift 
class MyView: UIView, UITableViewDataSource { 
} 


// In Objective C, in myview.h 
@interface MyView: UIView <UITableViewDataSource> 

その後、あなたはあなたのビューコントローラがMYVIEWのインスタンスに明示的にあなたのtableViewのデータソースを設定して初期化するいくつかの点で。何かのように

// In Swift 
let myView = MyView() 
override func viewDidLoad() { 
    tableView.dataSource = myView 
} 

// In Objective C 
@interface ViewController() 
@property (strong, nonatomic) MyView *myView; 
@end 


@implementation ViewController 
- (void)viewDidLoad() { 
    myView = [[MyView alloc] init]; 
    tableView.dataSource = myView; 
} 
@end 
+0

ほとんどのtableViewのdataSourceにはModelが必要です。モデルにMyViewを割り当てる必要がありますか? – GodCard

+0

@GodCard、そうです。自分のコード例でMyViewを空のままにしましたが、そのプロパティとアウトレットを追加し、DataSourceとDelegateプロトコルメソッドを実装する必要があります。 –

関連する問題