zxfcumtcs / ZSKVOController

Simplify data binding base on KVO

Geek Repo:Geek Repo

Github PK Tool:Github PK Tool

ZSKVOController 是一个基于 KVO 的 Data Binding 框架。

ZSKVOController 框架达到的效果: 假如: 在 ViewModel 中有属性:titledesc, View 需要绑定titledesc,则在 View 中只需做两件事:

  • 绑定:将 ViewModel 绑定到 View 上[_viewModel zs_addKVOObserver:self];
  • 通过宏ZSKVOObserveZSKVOObserve_Change实现 KVO 响应方法。

如:

ZSKVOObserve(title)
{
    if (change[ZSKVONotificationKeys.observeder] == _viewModel) {
        _titleLabel.text = [NSString stringWithFormat:@"from viewmode1:%@", change[NSKeyValueChangeNewKey]];
    }
    else if (change[ZSKVONotificationKeys.observeder] == _viewModel2) {
        _titleLabel.text = [NSString stringWithFormat:@"from viewmode2:%@", change[NSKeyValueChangeNewKey]];
    }
    else {
        _titleLabel.text = [NSString stringWithFormat:@"from unknown viewmode:%@", change[NSKeyValueChangeNewKey]];
    }
}

ZSKVOObserve_Change(desc, changes)
{
    _descLabel.text = changes[NSKeyValueChangeNewKey];
}

其中,参数:change由两部分组成:

  • KVO 回调方法observeValueForKeyPath:ofObject:change:context:中的 change;
  • ZSKVONotificationKeys.observeder为 key,observeder(ViewModel)为 value 的键值对(主要用于区分 observer 观察了多个具有相同 keypath 的 observeder)。

ZSKVOController 原理介绍请参看简化 iOS Data Binding

About

Simplify data binding base on KVO


Languages

Language:Objective-C 100.0%