我是MVVM的新手。如何从子视图模型更新父视图模型中的数据模型?
举个例子,假设我有一个CollectionViewModel
的新闻源页面,它会保留一个Post
(我的日期模型)数组和一个CollectionCellViewModel
数组,对应于各个帖子。每个小区都会发出网络请求来收听新的喜欢。如何将此信息传回CollectionViewModel
并更新Post
?
答案 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 }