MUKit系列包含但不限于以下框架。
MUTableViewManager pod 'MUKit/TableViewManager'
MUNetworking pod 'MUKit/Networking'
MUNavigation pod 'MUKit/Navigation'
MUSignal pod 'MUKit/Signal'
MUEPaymentManager pod 'MUKit/EPaymentManager'
MUShared pod 'MUKit/Shared'
MUCarousel pod 'MUKit/Carousel'
MUEncryption pod 'MUKit/Encryption'
MUCollectionViewManager pod 'MUKit/CollectionViewManager'
MUPopupController pod 'MUKit/PopupController'
MUPaperView pod 'MUKit/PaperView'
详细注释和案例稍后逐步更新.......
上一次给大家分享了MUKit/Signal的信号框架,但很多人表示不会用或者不知道这个信号框架的价值在哪。这一次通过一个购物车例子来展示一下这个框架的实际用法,大家可以对比一下这个框架和你们所用框架的优劣。
上一篇MUSingal使用原理介绍https://www.jianshu.com/p/1c11e10aa126
购物车实践
最终效果
car.gif分析
购物车涉及的需求大概有以下几点
1.从购物车中选择需要下单的商品(全选、多选、单选)
2.购买数量的增减
3.统计(购买商品的数量以及需要支付的价格)
4.优惠券之类的在这里不考虑
单个物品的数量增减
单个物品的增减逻辑一般会写在cell内部,但由于外部需要做统计显示,一般都会采用block或delegate回调到外部控制器。但在这里不需要这么做,signal是可以在controller响应,这也是当前开发这个框架的灵感所在。那么cell里面的代码(大概80多行左右)逻辑如下:
cell内部逻辑.png
控制器的统计显示
逻辑代码(大概50行左右)
controller逻辑.png
至此一个购物车的简单方案就实现了,在此我们没有使用任何的block和delegate,因为不需要。大家可以跟自己之前写的购物车对比一下,看看有什么优劣,可以在评论区讨论。
网友评论
没有响应.
#pragma mark -全选和反全选
Click_MUSignal(allSelectImageView){
UIImageView *imageView = object;
imageView.highlighted = !imageView.highlighted;
for (MUSignalCarObject*model in self.tableViewManager.modelArray) {//取出所有模型设置选中状态为选中
if (imageView.highlighted&&!model.isSelected) {
_totalNumber += 1;
_totalPrice += [model.priceString doubleValue]*model.number;
}
if (!imageView.highlighted&&model.isSelected) {
_totalNumber -= 1;
_totalPrice -= [model.priceString doubleValue]*model.number;
}
model.isSelected = imageView.highlighted;//选中或反选
}
//显示
_totalLabel.text = [NSString stringWithFormat:@"¥%.2f",_totalPrice];
_sureButton.titleStringMu = [NSString stringWithFormat:@"结算(%d)",_totalNumber];
[self.tableView reloadData];//更新数据状态
}