ViewModel类是否能够按照MVVM在iOS中符合UITableviewDelegate和UITableViewDataSource

ViewModel类是否能够按照MVVM在iOS中符合UITableviewDelegate和UITableViewDataSource,ios,swift,mvvm,Ios,Swift,Mvvm,我有一个viewcontroller,它显示一个具有复杂UI和不同类型数据的表视图,具体取决于某些条件/用户类型。这涉及隔离和处理用户选择数据以及隐藏/取消隐藏展开/关闭部分的逻辑。当我使用MVVM模式时,我的viewmodel类能否符合UITableviewDelegate和UITableViewDataSource,这样我就有了更薄的viewcontroller 差不多- class HomeViewController: UIViewController { . . let v

我有一个viewcontroller,它显示一个具有复杂UI和不同类型数据的表视图,具体取决于某些条件/用户类型。这涉及隔离和处理用户选择数据以及隐藏/取消隐藏展开/关闭部分的逻辑。当我使用MVVM模式时,我的viewmodel类能否符合UITableviewDelegate和UITableViewDataSource,这样我就有了更薄的viewcontroller

差不多-

class HomeViewController: UIViewController {

 .
 .

  let viewModel = HomeViewModel()

  @IBOutlet weak var tableView: UITableView!

 .
 .

  tableView.delegate = viewModel
  tableView.dataSource = viewModel
}

class HomeViewModel: UITableViewDataSource, UITableViewDelegate {

//Implement delegates

}

是的,您可以将符合这些协议的任何对象设置为委托、数据源或将它们分离为不同的对象,任何人都可以实现协议

在编写复杂的表视图数据源或委托时,最好定义一个类型,其目的是作为表视图的数据源。这有助于更好地分离对象之间的责任

您可以在此处找到Apple实现不同对象作为表/集合视图数据源的示例:

这些对象不必是您的viewModel,但请查看以下示例:

谢谢。。真的找到了榜样relevant@ManjunathK伟大的很高兴它很有用,它比这个问题有更多的信息,我真的从中了解到,你认为我们将viewmodel设置为tableview的代理是否有可能违反苹果的标准?我能看到更多的例子吗???@ManjunathK不,我不认为这违反了苹果的标准。事实上,苹果也有一个演示,在我的回答中加入了这个,请看另一个在iOS上开始使用MVVM的好例子(这次的代理和数据源是viewController):非常感谢我的朋友:)