Die meisten ViewController hat eine Tabellenansicht und die Datenquelle ist zu groß. Kann ich die Datenquelle in viewModel verschieben, da das ViewModel auch das Modell hat, das die Zelle benötigt.Kann ich die Datenquelle von tableview an mein viewModel binden
Antwort
Ich weiß nicht, ob ich dich klar verstehe. Sie möchten die DataSource der TableView auf eine andere Klasse als ViewController setzen, oder?
Sie können dies tun. Stellen Sie zunächst sicher, dass Ihre Klasse dem Protokoll UITableViewDataSource entspricht. Someting wie folgt aus:
// In Swift
class MyView: UIView, UITableViewDataSource {
}
// In Objective C, in myview.h
@interface MyView: UIView <UITableViewDataSource>
Dann irgendwann, wo Sie Ihre View-Controller explizit Ihre Tableview-Datenquelle zu einer Instanz von MyView gesetzt initialisieren. Etwas wie
// 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
Die DataSource der meisten TableViews sollte ein Model haben. Soll ich "MyView" ein Model zuweisen? – GodCard
@GodCard, ja du solltest. Ich habe MyView in meinem Codebeispiel leer gelassen, aber Sie sollten seine Eigenschaften und Ausgänge hinzufügen und die Protokollmethoden DataSource und Delegate implementieren. –
Ja können Sie das teilen. Sie können als Datenquelle oder Delegat erstellen und modellieren. – Sabby