【问题标题】:Can ViewModel class conforms to UITableviewDelegate and UITableViewDataSource in iOS as per MVVMViewModel 类能否按照 MVVM 在 iOS 中符合 UITableviewDelegate 和 UITableViewDataSource
【发布时间】:2019-02-10 13:02:06
【问题描述】:

我有一个视图控制器,它根据某些条件/用户类型显示具有复杂 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

}

【问题讨论】:

    标签: ios swift mvvm


    【解决方案1】:

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

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

    您可以在此处找到 Apple 实现不同对象作为表/集合视图的数据源的示例: Advanced User Interfaces with Collection Views by apple

    这些对象不一定是您的 viewModel,但请看一个很好的例子: MVVM with viewModel as the table datasource

    【讨论】:

    • 谢谢.. 找到真正相关的例子
    • @ManjunathK 太棒了!很高兴它很有用,它比问题有更多的信息,我真的从中学到了
    • 您是否认为我们通过将 viewmodel 设置为 tableview 的委托而违反了 Apple 标准?我可以在哪里看到更多的例子吗??
    • @ManjunathK 不,我不认为它违反了 Apple 标准。实际上,Apple 也有一个演示,并将其添加到我的答案 developer.apple.com/videos/play/wwdc2014/232 并且请参阅另一个在 iOS 上开始使用 MVVM 的好例子(这次代表和数据源是 viewController):medium.com/flawless-app-stories/…
    • 非常感谢我的朋友.. :)
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2020-04-08
    • 2014-11-14
    • 2011-04-05
    • 1970-01-01
    相关资源
    最近更新 更多