美文网首页收藏ios
iOS 实现购物车

iOS 实现购物车

作者: HH思無邪 | 来源:发表于2018-09-21 00:20 被阅读292次
    购物车.gif

    最近做商城项目,购物车我觉得是最麻烦的家伙,记录下实现思路和逻辑

    第一个点 选中与不选中的状态处理

    我是用model来赋状态,在网络数据model中给一个bool型值,选button的selecte值赋给model的bool值,刷新这个cell达到选中的效果,tableview的机制配合rac可以轻松取到正在操作的cell

     //选中与不选中
               [[[cell.selectBtn rac_signalForControlEvents:UIControlEventTouchUpInside] takeUntil:cell.rac_prepareForReuseSignal] subscribeNext:^(id x) {
                   cell.selectBtn.selected=!cell.selectBtn.selected;
                   //状态保存在model里
                   cell.model.btnselelct=cell.selectBtn.selected;
                   if (cell.selectBtn.selected==YES) {
                       [self.selectCartIDs addObject:cell.model.cart_id];
                       if (self.editstate==0) {
                            [self getTotalNetWorkData];
                       }else{
                            [self isallselect];
                       }
                   }else{
                       [self.selectCartIDs removeObject:cell.model.cart_id];
                       if (self.editstate==0) {
                           [self getTotalNetWorkData];
                       }else{
                            [self isallselect];
                       }
                   }
                   //刷新指定cell
                    [tableView reloadRowsAtIndexPaths:[NSArray arrayWithObjects:indexPath,nil] withRowAnimation:UITableViewRowAnimationNone];
               }];
    

    第二个点全选按钮

    实现思路:遍历购物车数据数组,给每一个model中的按钮状态bool值赋yes或者NO,这样点击全选刷新一下就可以实现全选效果,改变model值时,重新创建一个model,取出来改就可以了,无需任何操作。

    //全选Btn
    - (void)AllchooseBtnClick
    {
        self.footer.AllchooseBtn.selected = ! self.footer.AllchooseBtn.selected;
         [self.selectCartIDs removeAllObjects];
         self.selectCartIDs = [NSMutableArray arrayWithArray:self.allcartIDs];
        if (self.footer.AllchooseBtn.selected==YES) {
            for (int i=0; i<self.cartlistarry.count; i++) {
                TSCartListModel *model  = self.cartlistarry[i];
                model.btnselelct=YES;
            }
            
        } else {
            for (int i=0; i<self.cartlistarry.count; i++) {
                TSCartListModel *model  = self.cartlistarry[i];
                model.btnselelct=NO;
            }
            [self.selectCartIDs removeAllObjects];
        }
        
        [self.tableView reloadData];
    }
    

    第三个点 编辑商品数量时后台需要上传参数为 json格式字符串

    数量的增减也是model赋值,思路和选中状态实现差不多,字典转化为json

    #pragma mark - 字典转化为JSON
    - (NSString *)convertToJsonData:(NSDictionary *)dict {
        NSError *error;
        NSData *jsonData = [NSJSONSerialization dataWithJSONObject:dict options:NSJSONWritingPrettyPrinted error:&error];
        NSString *jsonString;
        if (!jsonData) {
            NSLog(@"%@",error);
        }else{
            jsonString = [[NSString alloc]initWithData:jsonData encoding:NSUTF8StringEncoding];
        }
        NSMutableString *mutStr = [NSMutableString stringWithString:jsonString];
        NSRange range = {0,jsonString.length};
        //去掉字符串中的空格
        [mutStr replaceOccurrencesOfString:@" " withString:@"" options:NSLiteralSearch range:range];
        NSRange range2 = {0,mutStr.length};
        //去掉字符串中的换行符
        [mutStr replaceOccurrencesOfString:@"\n" withString:@"" options:NSLiteralSearch range:range2];
        return mutStr;
        
    }
    

    相关文章

      网友评论

        本文标题:iOS 实现购物车

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