iOS 实现购物车

购物车.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

第三个点 编辑商品数量时后台需要上传参数为 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 实现购物车)