美文网首页Other组件示例代码
MUSignal的实践案例-购物车

MUSignal的实践案例-购物车

作者: mu_无与伦比 | 来源:发表于2018-05-28 08:54 被阅读345次

    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,因为不需要。大家可以跟自己之前写的购物车对比一下,看看有什么优劣,可以在评论区讨论。

    [MUKit] https://www.jianshu.com/p/3c888ebc6450 系列介绍和源码链接

    相关文章

      网友评论

      • kivinSun:你好,MUSignal 拖到项目中后 , 有部分列表界面 ,cell点击事件 didSelectedRow 无法响应.
        mu_无与伦比:@kivinSun 看看有没有使用MUTableViewManager,有的话就是它代理了,把它注释掉就行
        kivinSun:@mu_无与伦比 系统的 代理 -(UITableViewCell *)tableView:(UITableView *)tableView cellForRowAtIndexPath:(NSIndexPath *)indexPath
        没有响应.
        mu_无与伦比:@kivinSun block没回调?
      • 0x00chen:有bug,先选中其中某几个,然后点击全选,然后点取消全选,价格未归零。
        mu_无与伦比:@0x00chen 不好意思,没经过严格测试!感谢你的指正。 把源码里的代码提成下面这段就可以了
        #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];//更新数据状态

        }

      本文标题:MUSignal的实践案例-购物车

      本文链接:https://www.haomeiwen.com/subject/kuzpdftx.html