zoukankan      html  css  js  c++  java
  • iOS_一个购物车的使用

    这个项目是本人原创:要转载,请说明下:http://www.cnblogs.com/blogwithstudyofwyn/p/5618107.html

    项目的地址:https://github.com/Shangshanroushui/ShoppingCart.git

    该程序是个一元夺宝的的购物车。

    项目中依然使用的MVC

    model:是商品的全部信息

    GoodsInfoModel.h

    @property(strong,nonatomic)NSString *imageName;//商品图片
    @property(strong,nonatomic)NSString *goodsTitle;//商品标题
    @property(strong,nonatomic)NSString *goodsPrice;//商品单价
    @property(assign,nonatomic)BOOL selectState;//是否选中状态
    @property(assign,nonatomic)NSInteger goodsNum;//商品个数
    @property(assign,nonatomic)NSInteger allNum;//全部个数
    @property(assign,nonatomic)NSInteger remainedNum;//还需个数
    -(instancetype)initWithDict:(NSDictionary *)dict;

    GoodsInfoModel.m

    -(instancetype)initWithDict:(NSDictionary *)dict
    {
        if (self = [super init])
        {
            self.imageName = dict[@"imageName"];
            self.goodsTitle = dict[@"goodsTitle"];
            self.goodsPrice = dict[@"goodsPrice"];
            self.goodsNum = [dict[@"goodsNum"]integerValue];
            self.selectState = [dict[@"selectState"]boolValue];
            self.allNum=[dict[@"allNum"]integerValue];
            self.remainedNum=[dict[@"remainedNum"]integerValue];        
        }
        
        return  self;
    }

    View :1.自定义的一个tableViewCell 2.自定义的一个结算View

    ShopCartCell.h  :1.用于展示内容的各种控件 2.自定义了一个协议和代理 3.一个按钮触发事件

    PS:英文使用了masonry 自动布局。将需要的一些头文件和宏定义放到pch文件中了。直接导入pch文件了

    #import "GoodsInfoModel.h"
    
    //添加代理,用于按钮加减的实现
    @protocol ShopCartCellDelegate <NSObject>
    -(void)btnClick:(UITableViewCell *)cell andFlag:(int)flag;
    @end
    @interface ShopCartCell : UITableViewCell
    //增加一个view
    @property (nonatomic,strong) UIView *mainView;
    @property (nonatomic,strong) UIButton *selectBtn;
    @property (nonatomic,strong) UIImageView *goodsImg;
    @property (nonatomic,strong) UILabel *introductionLab;
    @property (nonatomic,strong) UILabel *needLab;
    @property (nonatomic,strong) UILabel *needNumLab;
    @property (nonatomic,strong) UILabel *remainedLab;
    @property (nonatomic,strong) UILabel *remianedNumLab;
    @property (nonatomic,strong) UIButton *addBtn;
    @property (nonatomic,strong) UITextField *goodsNumTF;
    @property (nonatomic,strong) UIButton *minusBtn;
    @property (nonatomic,strong) UILabel *winLab;
    @property (nonatomic,strong) UILabel *winNumLab;
    @property(assign,nonatomic)BOOL selectState;//选中状态
    //赋值
    -(void)addTheValue:(GoodsInfoModel *)goodsModel;
    @property(assign,nonatomic)id<ShopCartCellDelegate>delegate;

    ShopCartCell.m

    
    

     #import "SC.pch"

    @interface ShopCartCell()
    
    @end
    @implementation ShopCartCell
    
    - (void)awakeFromNib {
        // Initialization code
    }
    -(instancetype)initWithStyle:(UITableViewCellStyle)style reuseIdentifier:(NSString *)reuseIdentifier
    {
        self = [super initWithStyle:style reuseIdentifier:reuseIdentifier];
        if (self) {
    //        self.layer.borderColor = [UIColor redColor].CGColor;
    //        self.layer.borderWidth = 1;
            [self setSelectionStyle:UITableViewCellSelectionStyleNone];
    //        self.backgroundColor=[UIColor colorWithRed:234/255.0 green:234/255.0 blue:234/255.0 alpha:0.5];
    //        [self setSeparatorInset:UIEdgeInsetsMake(0, 60, 0, 0)];
            UIView *mainView=[[UIView alloc]init];
            [self.contentView addSubview:mainView];
            mainView.backgroundColor=[UIColor whiteColor];
            self.mainView=mainView;
            
            UIButton *selectBtn = [[UIButton alloc]init];
            [self.mainView addSubview:selectBtn];
            [selectBtn setImage:[UIImage imageNamed:@"1"] forState:UIControlStateNormal];
            [selectBtn setImage:[UIImage imageNamed:@"5"]forState:UIControlStateSelected];
            [selectBtn addTarget:self action:@selector(selectBtnAction:) forControlEvents:UIControlEventTouchUpInside];
            selectBtn.tag=13;
            self.selectBtn=selectBtn;
    
            
            UIImageView *goodsImg = [[UIImageView alloc]init];
            [self.mainView addSubview:goodsImg];
    //        goodsImg.image = [UIImage imageNamed:@"4"];
            self.goodsImg=goodsImg;
            
            UILabel *introductionLab = [[UILabel alloc]init];
            [introductionLab setFont:[UIFont systemFontOfSize:17.0]];
            [self.mainView addSubview:introductionLab];
    //        introductionLab.text=@"[111111111]";
            introductionLab.textColor=[UIColor grayColor];
            self.introductionLab=introductionLab;
            
            UILabel *needLab = [[UILabel alloc]init];
            [needLab setFont:[UIFont systemFontOfSize:13.0]];
            [self.mainView addSubview:needLab];
            needLab.text=@"总需:";
            needLab.textColor=[UIColor grayColor];
            self.needLab=needLab;
            
            
            UILabel *needNumLab = [[UILabel alloc]init];
            [needNumLab setFont:[UIFont systemFontOfSize:13.0]];
            [self.mainView addSubview:needNumLab];
    //        needNumLab.text=@"1000";
            needNumLab.textColor=[UIColor grayColor];
            self.needNumLab=needNumLab;
            
            
            UILabel *remainedLab = [[UILabel alloc]init];
            [remainedLab setFont:[UIFont systemFontOfSize:13.0]];
            [self.mainView addSubview:remainedLab];
            remainedLab.textColor=[UIColor grayColor];
            remainedLab.text=@"剩余:";
            self.remainedLab=remainedLab;
            
            UILabel *remianedNumLab = [[UILabel alloc]init];
            [remianedNumLab setFont:[UIFont systemFontOfSize:13.0]];
            [self.mainView addSubview:remianedNumLab];
    //        remianedNumLab.text=@"999";
            remianedNumLab.textColor=[UIColor redColor];
            self.remianedNumLab=remianedNumLab;
            
            
            UIButton *minusBtn = [[UIButton alloc]init];
            [self.mainView addSubview:minusBtn];
            [minusBtn setImage:[UIImage imageNamed:@"2"] forState:UIControlStateNormal];
            [minusBtn addTarget:self action:@selector(deleteBtnAction:) forControlEvents:UIControlEventTouchUpInside];
            minusBtn.tag = 11;
            self.minusBtn=minusBtn;
            
            UITextField *goodsNumTF = [[UITextField alloc]init];
            [self.mainView addSubview:goodsNumTF];
            goodsNumTF.textAlignment=NSTextAlignmentCenter;
    //        goodsNumTF.text=@"10";
            goodsNumTF.backgroundColor=[UIColor grayColor];
            self.goodsNumTF=goodsNumTF;
            
            UIButton *addBtn = [[UIButton alloc]init];
            [self.mainView addSubview:addBtn];
            [addBtn setImage:[UIImage imageNamed:@"3"] forState:UIControlStateNormal];
            [addBtn addTarget:self action:@selector(addBtnAction:) forControlEvents:UIControlEventTouchUpInside];
            addBtn.tag = 12;
            self.addBtn=addBtn;
    
            
            UILabel *winLab = [[UILabel alloc]init];
            [winLab setFont:[UIFont systemFontOfSize:14.0]];
            [self.mainView addSubview:winLab];
            winLab.text=@"中奖概率";
            winLab.textColor=[UIColor grayColor];
            self.winLab=winLab;
            
            UILabel *winNumLab = [[UILabel alloc]init];
            [winNumLab setFont:[UIFont systemFontOfSize:14.0]];
            [self.mainView addSubview:winNumLab];
            winNumLab.text=@"100%";
            winNumLab.textColor=[UIColor grayColor];
            self.winNumLab=winNumLab;
            
        }
        return self;
    }
    /**
     
     *  给单元格赋值
     
     *
     
     *  @param goodsModel 里面存放各个控件需要的数值
     
     */
    
    -(void)addTheValue:(GoodsInfoModel *)goodsModel
    {
        self.goodsImg.image = [UIImage imageNamed:goodsModel.imageName];
        self.introductionLab.text = goodsModel.goodsTitle;
        self.needNumLab.text = [NSString stringWithFormat:@"%ld",(long)goodsModel.allNum];
        self.remianedNumLab.text = [NSString stringWithFormat:@"%ld",(long)goodsModel.remainedNum];
        self.goodsNumTF.text=[NSString stringWithFormat:@"%ld",(long)goodsModel.goodsNum];
    
        if (goodsModel.selectState){
            self.selectState = YES;
            [self.selectBtn setImage:[UIImage imageNamed:@"5"] forState:UIControlStateNormal];
        }else{
            
             self.selectState = NO;
            [self.selectBtn setImage:[UIImage imageNamed:@"1"] forState:UIControlStateNormal];
        }
    }
    //
    -(void)selectBtnAction:(UIButton *)sender{
    
        [self.delegate btnClick:self andFlag:(int)sender.tag];
    }
    //
    -(void)deleteBtnAction:(UIButton *)sender{
    //    NSInteger goodsNum=[self.goodsNumTF.text integerValue];
    //    if (goodsNum>1) {
    //        goodsNum-=1;
    //        self.goodsNumTF.text=[NSString stringWithFormat:@"%ld",(long)goodsNum];
    //        NSInteger remianedNum=[self.remianedNumLab.text integerValue]+1;
    //        self.remianedNumLab.text=[NSString stringWithFormat:@"%ld",(long)remianedNum];
    //    }
        ////////
        //判断是否选中,选中才能点击
        if (self.selectState == YES)
        {
            //调用代理
            [self.delegate btnClick:self andFlag:(int)sender.tag];
        }
    }
    
    -(void)addBtnAction:(UIButton *)sender{
    //    NSInteger goodsNum=[self.goodsNumTF.text integerValue];
    //    if ([self.remianedNumLab.text integerValue]>0) {
    //        goodsNum+=1;
    //        self.goodsNumTF.text=[NSString stringWithFormat:@"%ld",(long)goodsNum];
    //        NSInteger remianedNum=[self.remianedNumLab.text integerValue]-1;
    //        self.remianedNumLab.text=[NSString stringWithFormat:@"%ld",(long)remianedNum];
    //    }
        ///////
        if (self.selectState == YES)
        {
            //调用代理
            [self.delegate btnClick:self andFlag:(int)sender.tag];
        }
    }
    -(void)layoutSubviews
    {
        [super layoutSubviews];
        WEAKSELF(weakSelf);
        [self.mainView mas_makeConstraints:^(MASConstraintMaker *make) {
    //        make.center.mas_equalTo(weakSelf).offset(0);
            make.left.and.right.mas_equalTo(0);
            make.top.and.bottom.mas_equalTo(weakSelf).offset(10);
        }];
        [self.selectBtn mas_makeConstraints:^(MASConstraintMaker *make) {
            make.centerY.mas_equalTo(weakSelf.mainView.mas_centerY).offset(0);
            make.left.mas_equalTo(10);
            //make.height.and.width.mas_equalTo(17);
            make.height.mas_equalTo(17);
            make.width.mas_equalTo(17);
        }];
        
        [self.goodsImg mas_makeConstraints:^(MASConstraintMaker *make) {
            make.centerY.mas_equalTo(weakSelf.mainView.mas_centerY).offset(0);
            make.left.mas_equalTo(weakSelf.selectBtn.mas_right).offset(10);
            //make.height.and.width.mas_equalTo(17);
            make.height.mas_equalTo(70);
            make.width.mas_equalTo(70);
        }];
        
        [self.introductionLab mas_makeConstraints:^(MASConstraintMaker *make) {
            make.top.mas_equalTo(weakSelf.mainView.mas_top).offset(10);
            make.left.mas_equalTo(weakSelf.goodsImg.mas_right).offset(10);
            make.right.mas_equalTo(weakSelf.mas_right).offset(0);
            make.height.mas_equalTo(20);
        }];
    
        [self.needLab mas_makeConstraints:^(MASConstraintMaker *make) {
            make.top.mas_equalTo(weakSelf.introductionLab.mas_bottom).offset(10);
            make.left.mas_equalTo(weakSelf.introductionLab).offset(0);
            make.height.mas_equalTo(20);
            make.width.mas_equalTo(40);
        }];
    
        [self.needNumLab mas_makeConstraints:^(MASConstraintMaker *make) {
            make.top.mas_equalTo(weakSelf.needLab).offset(0);
            make.left.mas_equalTo(weakSelf.needLab.mas_right).offset(0);
            make.height.mas_equalTo(weakSelf.needLab.mas_height).offset(0);
            make.width.mas_equalTo(60);
        }];
    
        [self.remainedLab mas_makeConstraints:^(MASConstraintMaker *make) {
            make.top.mas_equalTo(weakSelf.needLab).offset(0);
            make.left.mas_equalTo(weakSelf.needNumLab.mas_right).offset(10);
            make.height.mas_equalTo(weakSelf.needLab.mas_height);
            make.width.mas_equalTo(40);
        }];
    
        [self.remianedNumLab mas_makeConstraints:^(MASConstraintMaker *make) {
            make.top.mas_equalTo(weakSelf.needLab).offset(0);
            make.left.mas_equalTo(weakSelf.remainedLab.mas_right).offset(0);
            make.height.mas_equalTo(weakSelf.needLab.mas_height);
            make.width.mas_equalTo(60);
        }];
        [self.minusBtn mas_makeConstraints:^(MASConstraintMaker *make) {
            make.top.mas_equalTo(weakSelf.needLab.mas_bottom).offset(10);
            make.left.mas_equalTo(weakSelf.introductionLab).offset(0);
            make.height.mas_equalTo(24);
            make.width.mas_equalTo(24);
        }];
        ////////////////
        
        [self.winLab mas_makeConstraints:^(MASConstraintMaker *make) {
            make.top.mas_equalTo(weakSelf.minusBtn).offset(0);
            make.right.mas_equalTo(weakSelf.mas_right).offset(-50);
            make.height.mas_equalTo(10);
            make.width.mas_equalTo(60);
        }];
        
        [self.winNumLab mas_makeConstraints:^(MASConstraintMaker *make) {
            make.top.mas_equalTo(weakSelf.winLab.mas_bottom).offset(5);
            make.right.mas_equalTo(weakSelf.winLab).offset(0);
            make.height.mas_equalTo(weakSelf.winLab);
            make.width.mas_equalTo(weakSelf.winLab);
        }];
        [self.addBtn mas_makeConstraints:^(MASConstraintMaker *make) {
            make.top.mas_equalTo(weakSelf.minusBtn).offset(0);
            make.right.mas_equalTo(weakSelf.winLab.mas_left).offset(-20);
            make.height.mas_equalTo(weakSelf.minusBtn);
            make.width.mas_equalTo(weakSelf.minusBtn);
        }];
    
        [self.goodsNumTF mas_makeConstraints:^(MASConstraintMaker *make) {
            make.top.mas_equalTo(weakSelf.minusBtn).offset(0);
            make.right.mas_equalTo(weakSelf.addBtn.mas_left).offset(-10);
            make.left.mas_equalTo(weakSelf.minusBtn.mas_right).offset(10);
            make.height.mas_equalTo(weakSelf.minusBtn);
        }];
    }

    SettlementView.h  一个结算的view ,用于显示选择的个数和金额,以及里那个按钮:全选和结算按钮。

    @interface SettlementView : UIView
    @property(nonatomic,strong)UIButton*allSelecteBtn;
    @property(nonatomic,strong)UILabel*allSelecteLab;//全选
    @property(nonatomic,strong)UILabel*sumLab;//总价
    @property(nonatomic,strong)UILabel*goodsNumLab;//商品数
    @property(nonatomic,strong)UIButton *statementBtn;//结算
    @end

    SettlementView.m 

    #import "SC.pch"
    @implementation SettlementView
    
    -(instancetype)initWithFrame:(CGRect)frame{
        self=[super initWithFrame:frame];
        if (self){
            [self setupUI];
        }
        return self;
    }
    -(void)setupUI{
        self.backgroundColor=[UIColor whiteColor];
        self.layer.borderColor = [UIColor grayColor].CGColor;
        self.layer.borderWidth = 0.5;
        //全选按钮
        //self.allSelecteBtn
        UIButton *allSelecteBtn=[[UIButton alloc]init];
        [self addSubview:allSelecteBtn];
        [allSelecteBtn addTarget:self action:@selector(selectBtnAction:) forControlEvents:UIControlEventTouchUpInside];
        _allSelecteBtn=allSelecteBtn;
        
        [self.allSelecteBtn setImage:[UIImage imageNamed:@"1"] forState:UIControlStateNormal];
    //    [self.allSelecteBtn setImage:[UIImage imageNamed:@"5"] forState:UIControlStateSelected];
    
        self.allSelecteLab=[[UILabel alloc]init];
        [self addSubview:self.allSelecteLab];
        self.allSelecteLab.text=@"全选";
        self.allSelecteLab.font=[UIFont systemFontOfSize:14.0];
        
        self.sumLab=[[UILabel alloc]init];
        [self addSubview:self.sumLab];
        self.sumLab.text=@"0 元";
        self.sumLab.textColor=[UIColor redColor];
        self.allSelecteLab.font=[UIFont systemFontOfSize:16.0];
        
        self.goodsNumLab=[[UILabel alloc]init];
        [self addSubview:self.goodsNumLab];
        self.goodsNumLab.text=@"共计:0 件商品";
        self.goodsNumLab.font=[UIFont systemFontOfSize:12.0];
        
        //全选按钮
        self.statementBtn=[[UIButton alloc]init];
        [self addSubview:self.statementBtn];
        [self.statementBtn setBackgroundColor:[UIColor redColor]];
        [self.statementBtn setTitle:@"结算" forState:UIControlStateNormal];    
    }
    -(void)selectBtnAction:(UIButton *)sender{
        
        //[self.delegate btnClick:self andFlag:(int)sender.tag];
    }
    - (void)layoutSubviews
    {
        [super layoutSubviews];
        WEAKSELF(weakSelf);
        [self.allSelecteBtn mas_makeConstraints:^(MASConstraintMaker *make) {
            make.centerY.mas_equalTo(weakSelf.mas_centerY).offset(0);
            make.left.mas_equalTo(weakSelf).offset(10);
            make.height.mas_equalTo(17);
            make.width.mas_equalTo(17);
        }];
    
        [self.allSelecteLab mas_makeConstraints:^(MASConstraintMaker *make) {
            make.centerY.mas_equalTo(weakSelf.mas_centerY).offset(0);
            make.left.mas_equalTo(weakSelf.allSelecteBtn.mas_right).offset(5);
            make.width.mas_equalTo(40);
            make.height.mas_equalTo(40);
        }];
        [self.sumLab mas_makeConstraints:^(MASConstraintMaker *make) {
            make.top.mas_equalTo(5);
            make.left.mas_equalTo(weakSelf.allSelecteLab.mas_right).offset(20);
            make.height.mas_equalTo(20);
            make.width.mas_equalTo(100);
        }];
        [self.goodsNumLab mas_makeConstraints:^(MASConstraintMaker *make) {
            make.top.mas_equalTo(weakSelf.sumLab.mas_bottom).offset(5);
            make.left.mas_equalTo(weakSelf.sumLab);
            make.height.mas_equalTo(weakSelf.sumLab);
            make.width.mas_equalTo(weakSelf.sumLab);
        }];
        [self.statementBtn mas_makeConstraints:^(MASConstraintMaker *make) {
            make.centerY.mas_equalTo(weakSelf.mas_centerY).offset(0);
            make.right.mas_equalTo(weakSelf.mas_right).offset(-5);
            make.height.mas_equalTo(30);
            make.width.mas_equalTo(100);
        }];
    }

    Controller:

    ShopCartViewController.h

    ShopCartViewController.m  

    项目最核心:选择商品,添加,减少等,以及在这个操作中结算View的变化。

    #import "ShopCartViewController.h"
    #import "ShopCartCell.h"
    #import "SC.pch"
    #import "SettlementView.h"
    #import "GoodsInfoModel.h"
    
    #import "StatementViewController.h"
    @interface ShopCartViewController ()<UITableViewDataSource,UITableViewDelegate,ShopCartCellDelegate>
    @property(nonatomic,strong)UITableView *goodsTableView;
    @property(nonatomic,strong)SettlementView *settlementView;
    @property(nonatomic,assign)NSInteger allPrice;
    @property(nonatomic,assign)NSInteger goodsNum;;
    @property(nonatomic,strong)NSMutableArray *infoArr;;
    @end
    @implementation ShopCartViewController
    
    - (void)viewDidLoad {
        [super viewDidLoad];
    //    self.view.backgroundColor=[UIColor colorWithRed:234/255.0 green:234/255.0 blue:234/255.0 alpha:1];
        [self setInfo];
        [self setGoodsTableView];
        [self setupSettlement];
    
    }
    -(void)setInfo{
        self.allPrice=0;
        self.goodsNum = 0;
        self.infoArr = [[NSMutableArray alloc]init];
        /**
         
         *  初始化一个数组,数组里面放字典。字典里面放的是单元格需要展示的数据
         
         */
        
        for (int i = 0; i<7; i++)
            
        {
            
            NSMutableDictionary *infoDict = [[NSMutableDictionary alloc]init];
            
            [infoDict setValue:@"4.png" forKey:@"imageName"];
            
            [infoDict setValue:@"这是商品标题" forKey:@"goodsTitle"];
            
    //        [infoDict setValue:@"2000" forKey:@"goodsPrice"];
            
            [infoDict setValue:[NSNumber numberWithBool:NO] forKey:@"selectState"];
            
            [infoDict setValue:[NSNumber numberWithInt:1] forKey:@"goodsNum"];
            /*
             @property(assign,nonatomic)int allNum;
             
             @property(assign,nonatomic)int remainedNum;
             */
            [infoDict setValue:[NSNumber numberWithInt:1000] forKey:@"allNum"];
            [infoDict setValue:[NSNumber numberWithInt:999] forKey:@"remainedNum"];
            
            //封装数据模型
            GoodsInfoModel *goodsModel = [[GoodsInfoModel alloc]initWithDict:infoDict];
            
            //将数据模型放入数组中
            
            [self.infoArr addObject:goodsModel];
            
        }
    }
    -(void)setupSettlement{
        SettlementView *settlementView=[[SettlementView alloc]initWithFrame:CGRectMake(0, kScreen_Height-100, kScreen_Width, 60)];
        [settlementView.statementBtn addTarget:self action:@selector(goStatement) forControlEvents:UIControlEventTouchUpInside];
        
        [settlementView.allSelecteBtn addTarget:self action:@selector(goAllSelect:) forControlEvents:UIControlEventTouchUpInside];
        [self.view addSubview:settlementView];
        self.settlementView=settlementView;
        
        
    }
    -(void)setGoodsTableView{
        UITableView *goodsTableView=[[UITableView alloc]initWithFrame:CGRectMake(0, 0, kScreen_Width, kScreen_Height-20)];//0, 44, kScreen_Width, kScreen_Height-20)
        [self.view addSubview:goodsTableView];
        goodsTableView.showsHorizontalScrollIndicator=NO;
        goodsTableView.showsVerticalScrollIndicator=NO;
    //    goodsTableView.backgroundColor=[UIColor colorWithRed:234/255.0 green:234/255.0 blue:234/255.0 alpha:1];
        goodsTableView.backgroundColor=[UIColor redColor];
        goodsTableView.delegate=self;
        goodsTableView.dataSource=self;
        [goodsTableView registerClass:[ShopCartCell class] forCellReuseIdentifier:@"SCCell"];
    //    [goodsTableView registerNib:[UINib nibWithNibName:@"ShopCartTableCell" bundle:nil] forCellReuseIdentifier:@"SCCell"];
        goodsTableView.separatorStyle = UITableViewCellSeparatorStyleNone;
        self.goodsTableView=goodsTableView;
    }
    
    #pragma mark-------
    #pragma mark--------tableViewDelegate
    -(UITableViewCell *)tableView:(UITableView *)tableView cellForRowAtIndexPath:(NSIndexPath *)indexPath{
        static NSString *SCCell =  @"SCCell";
        ShopCartCell *cell=[tableView dequeueReusableCellWithIdentifier:SCCell forIndexPath:indexPath];
        if (!cell){
            cell=[[ShopCartCell alloc]initWithStyle:UITableViewCellStyleDefault  reuseIdentifier:SCCell];
        }
        cell.delegate = self;
        [cell addTheValue:self.infoArr[indexPath.row]];
        return cell;
    }
    -(CGFloat)tableView:(UITableView *)tableView heightForRowAtIndexPath:(NSIndexPath *)indexPath{
        return 120;
    }
    -(NSInteger)tableView:(UITableView *)tableView numberOfRowsInSection:(NSInteger)section{
        return self.infoArr.count;
    }
    
    #pragma mark -- 实现加减按钮点击代理事件
    /**
     *  实现加减按钮点击代理事件
     *
     *  @param cell 当前单元格
     *  @param flag 按钮标识,11 为减按钮,12为加按钮
     */
    -(void)btnClick:(UITableViewCell *)cell andFlag:(int)flag{
        NSIndexPath *index = [self.goodsTableView indexPathForCell:cell];
        switch (flag) {
            case 11:
            {
                //做减法
                //先获取到当期行数据源内容,改变数据源内容,刷新表格
                GoodsInfoModel *model = self.infoArr[index.row];
                if (model.goodsNum > 1)
                {
                    model.goodsNum --;
                    model.remainedNum++;
                }
               // [self.goodsTableView reloadRowsAtIndexPaths:@[index] withRowAnimation:UITableViewRowAnimationAutomatic];
            }
                break;
            case 12:
            {
                //做加法
                GoodsInfoModel *model = self.infoArr[index.row];
                if (model.remainedNum>0) {
                    model.remainedNum --;
                    model.goodsNum++;
                }
                //[self.goodsTableView reloadRowsAtIndexPaths:@[index] withRowAnimation:UITableViewRowAnimationAutomatic];
            }
                break;
            case 13:
            {    //先获取到当期行数据源内容,改变数据源内容,刷新表格
                GoodsInfoModel *model = self.infoArr[index.row];
                if (model.selectState)            {
                    model.selectState = NO;
                }else {
                    model.selectState = YES;
    
                }
                //刷新当前行
                //[self.goodsTableView reloadRowsAtIndexPaths:@[index] withRowAnimation:UITableViewRowAnimationAutomatic];
            }
            default:
                break;
        }
        //刷新表格
        [self.goodsTableView reloadData];
        
        //计算总价
        [self totalPrice];
        
    }
    #pragma mark -- 计算价格
    -(void)totalPrice
    {
        //遍历整个数据源,然后判断如果是选中的商品,就计算价格(单价 * 商品数量)
        for ( int i =0; i<self.infoArr.count; i++)    {
            GoodsInfoModel *model = [self.infoArr objectAtIndex:i];
            if (model.selectState)
            {
                self.allPrice +=  model.goodsNum ;//[model.goodsPrice intValue];
                self.goodsNum +=model.goodsNum;
            }
        }
        //给总价文本赋值
        self.settlementView.sumLab.text = [NSString stringWithFormat:@"%ld 元",(long)self.allPrice];
        self.settlementView.goodsNumLab.text=[NSString stringWithFormat:@"共计:%ld 件商品 ",(long)self.goodsNum];
        //每次算完要重置为0,因为每次的都是全部循环算一遍
        self.allPrice = 0;
        self.goodsNum = 0;
    }
    //结算
    -(void)goStatement{
        NSInteger total=[self.settlementView.sumLab.text integerValue];
        if (total>0) {
            StatementViewController *statementVC=[[StatementViewController alloc]init];
            statementVC.price=total;
            [self.navigationController pushViewController:statementVC animated:YES];
            
        }
    }
    //全选
    -(void)goAllSelect:(UIButton *)sender{
        //判断是否选中,是改成否,否改成是,改变图片状态
        sender.tag = !sender.tag;
        if (sender.tag)    {
            [sender setImage:[UIImage imageNamed:@"5.png"] forState:UIControlStateNormal];
            
        }else{
            [sender setImage:[UIImage imageNamed:@"1.png"] forState:UIControlStateNormal];
        }
        //改变单元格选中状态
        for (int i=0; i<self.infoArr.count; i++)
        {
            GoodsInfoModel *model = [self.infoArr objectAtIndex:i];
            model.selectState = sender.tag;
        }
        //计算价格
        [self totalPrice];
        //刷新表格
        [self.goodsTableView reloadData];
    
    }

    StatementViewController.h 结算试图

    @property(nonatomic,assign)NSInteger price;//总价

    StatementViewController.m

    #import "StatementViewController.h"
    #import "SC.pch"
    @interface StatementViewController ()
    @end
    
    @implementation StatementViewController
    
    - (void)viewDidLoad {
        [super viewDidLoad];
        self.view.backgroundColor=[UIColor whiteColor];
        
        UILabel *allPrice=[[UILabel alloc]initWithFrame:CGRectMake(100, 100, 100, 160)];
        allPrice.text= [NSString stringWithFormat:@"-----%ld-------",(long)self.price];
        [self.view addSubview:allPrice];
        
    }
  • 相关阅读:
    tcp和udp的区别
    链路聚合配置
    TCP/IP协议
    ip数据报格式
    私有IP地址和公网IP地址
    ipconfig
    ipconfig
    命令更改ip地址2
    命令更改ip地址一
    路由器静态ip设置
  • 原文地址:https://www.cnblogs.com/blogwithstudyofwyn/p/5618107.html
Copyright © 2011-2022 走看看