ViewModel 类可以按照 MVVM 符合 iOS 中的 UITableviewDelegate 和 UITableViewDataSource

Man*_*thK 5 mvvm ios swift

我有一个视图控制器,它根据某些条件/用户类型显示具有复杂 UI 和不同类型数据的表视图。这涉及到隔离和处理用户选择数据以及隐藏/取消隐藏展开/关闭部分的逻辑。当我使用 MVVM 模式时,我的 viewmodel 类是否可以符合 UITableviewDelegate 和 UITableViewDataSource,以便我拥有更薄的视图控制器?

就像是 -

class HomeViewController: UIViewController {

 .
 .

  let viewModel = HomeViewModel()

  @IBOutlet weak var tableView: UITableView!

 .
 .

  tableView.delegate = viewModel
  tableView.dataSource = viewModel
}

class HomeViewModel: UITableViewDataSource, UITableViewDelegate {

//Implement delegates

}
Run Code Online (Sandbox Code Playgroud)

Boa*_*kel 3

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

\n\n

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

\n\n

您可以在此处找到 Apple 实现不同对象作为表/集合视图的数据源的示例:\n Apple 的带有集合视图的高级用户界面

\n\n

这些对象不一定是您的 viewModel,但请查看一个很好的示例:\n 以viewModel 作为表数据源的 MVVM

\n