ZDTableViewBinding
是利用ReactiveCocoa
自动分发tableView
的数据并计算高度且缓存的工具,支持header
和footer
。
主要的就一个实例方法和一个类方法
(instancetype)bindingHelperForTableView:(__kindof UITableView *)tableView
multiSection:(BOOL)multiSection
dataSourceSignal:(__kindof RACSignal *)dataSourceSignal
cellCommand:(nullable RACCommand *)cellCommand
headerFooterCommand:(nullable RACCommand *)headerFooterCommand
传参数之前,需要把cell
和section
包装成cellViewModel
、sectionViewModel
,监听 source 数据,然后把sourceSignal
扔给ZDTableViewBindingHelper
,剩下的事情就不用管了。
cell 和 section 中的控件的响应事件会通过外面的command
进行操作,比如,当footer
上的button
被点击时,执行RACCommand
的execute:
方法。
- (IBAction)bottomButtonAction:(UIButton *)sender
{
NSLog(@"tap footer button");
[self.headerFooterCommand execute:RACTuplePack(sender, self.sectionModel)];
}
然后bindingHelper
的对应的command
执行,你可以在tuple
中参数设置指定的 key 来判断到底是哪个控件传过来的事件,然后再进行对应的处理操作。
如果想单独执行tableViewDelegate
的某个方法,则需要设置delegate
,并实现相关协议。
Add the following line to your Podfile.
pod 'ZDTableViewBinding'
Then, run the following command:
$ pod install
ZDTableViewBinding is under an MIT license. See the LICENSE file for more information.