我有一个视图控制器,它根据某些条件/用户类型显示具有复杂 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)
是的,您可以将任何符合这些协议的对象设置为委托、数据源或将它们分离到不同的对象,任何东西和任何人都可以实现协议。
\n\n在编写复杂的表视图数据源或委托时,最好定义一个类型,其用途是表视图数据源。这有助于更好地分离对象之间的职责。
\n\n您可以在此处找到 Apple 实现不同对象作为表/集合视图的数据源的示例:\n Apple 的带有集合视图的高级用户界面
\n\n这些对象不一定是您的 viewModel,但请查看一个很好的示例:\n 以viewModel 作为表数据源的 MVVM
\n| 归档时间: |
|
| 查看次数: |
2652 次 |
| 最近记录: |