iOS MVVM如何将数据从子视图传递到父视图模型

时间:2018-03-02 20:32:20

标签: ios swift mvvm

我是MVVM的新手。如何从子视图模型更新父视图模型中的数据模型?

举个例子,假设我有一个CollectionViewModel的新闻源页面,它会保留一个Post(我的日期模型)数组和一个CollectionCellViewModel数组,对应于各个帖子。每个小区都会发出网络请求来收听新的喜欢。如何将此信息传回CollectionViewModel并更新Post

1 个答案:

答案 0 :(得分:3)

您可以通过多种方式实现这一目标:

  • 授权模式:

    protocol CollectionCellViewModelDelegate {
      func onAction()
    }
    
    class CollectionCellViewModelDelegate: YourType {
      var delegate: CollectionCellViewModelDelegate?
    
      /// Your custom action
      func yourCustomAction() {
          delegate?.onAction
      }
    }
    

然后在您的父类中分配.delegate并实现onAction()方法

  • 瓶盖:

    class CollectionCellViewModelDelegate: YourType {
      var yourAction: (()->())?
    
      func yourAction(_ completion: (()->())?) {
        yourAction = completion
      }
    
      /// Your custom action
      func yourCustomAction() {
        yourAction?()
      } 
    }
    

然后使用以下来自父类的代码调用您的闭包:

child.yourAction { // do custom stuff }