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