电商类的都可能会用到购物车,这篇博客就是关于购物车的搭建问题,
首先购物车的展示tableViewCell 、编辑购物车、删除购物车里面的商品、以及选择商品的结算问题,
主要的核心问题就是每次添加商品后都要计算一次商品总价。。。。
话不多说,直接看代码,
因为是自己写demo 所以 我们要自己构建数据:
我们的数据里面主要包含了:(商品的名称、价格和图片,三个信息)
for (int i = 0; i < 3; i ++) {
NSMutableDictionary *infoDict = [[NSMutableDictionary alloc]init];
[infoDict setValue:@"2.png" forKey:@"imageName"];
[infoDict setValue:@"商品标题" forKey:@"goodsTitle"];
[infoDict setValue:@"50" forKey:@"goodsPrice"];
[infoDict setValue:[NSNumber numberWithBool:NO] forKey:@"selectState"];
[infoDict setValue:[NSNumber numberWithInt:1] forKey:@"goodsNum"];
//封装数据模型
GoodsModel *model = [[GoodsModel alloc]initWithDict:infoDict];
//将数据模型放入数组
[self.infoArr addObject:model];
}
此处的model类是自己写的它里面包含了关于商品的一些信息,
并且我们初始化一个减号方法,用来存储数据模型
- (instancetype)initWithDict:(NSDictionary *)dict;
这样,我们就有了自己的商品数据
接下来 我们布局,这个就不用多说了,Xib、storyboard或者纯代码都可以
最主要的一点是商品信息里面会有一个增加、减少商品数量的button。。。。
布局完成之后 cell赋值,
这会我们的难点和重点就要来了,
每次选择商品之后都要计算一次总价,
总价 = 商品数量 * 商品单价
- (void)addPrice
{
//遍历整个数据源、并且判断如果是选中的商品、就计算价格(单价 * 商品数量)
for (int i = 0; i < _infoArr.count; i ++) {
GoodsModel *model = [_infoArr objectAtIndex:i];
if (model.selectState) {
//总价 = 商品数量 * 商品单价
allPrice = allPrice + model.goodsNum * [model.goodsPrice intValue];
}
}
//给文本赋值
_allPriceLab.text = [NSString stringWithFormat:@"%.2f", allPrice];
NSLog(@"%f", allPrice);
//每次计算完总价后清零
allPrice = 0.0;
}
这样,总价格就计算出来了
计算总价之后 ,我们每次需要他的时候调用即可。。。
当然,删除购物车里面的商品,就更简单了,只需要删除指定的cell,和数组里面cell的数据
刷新表格就可以了。。。
//改变删除按钮的title
-(NSString *)tableView:(UITableView *)tableView titleForDeleteConfirmationButtonForRowAtIndexPath:(NSIndexPath *)indexPath
{
return @"删除";
}
//删除购物车里面的内容
- (void)tableView:(UITableView *)tableView commitEditingStyle:(UITableViewCellEditingStyle)editingStyle forRowAtIndexPath:(NSIndexPath *)indexPath
{
if (editingStyle == UITableViewCellEditingStyleDelete) {
//删除数组里面的商品信息
[self.infoArr removeObjectAtIndex:indexPath.row];
//删除整个cell
[self.myTableView deleteRowsAtIndexPaths:[NSMutableArray arrayWithObject:indexPath] withRowAnimation:UITableViewRowAnimationAutomatic];
}
}
代码已经上传至git@OSC 有兴趣的兄弟姐妹们可以看下
https://git.oschina.net/ddangPengf/shopping
https://github.com/ddangPengf520/-
至此,一个稍微简单点的购物车就完成了,如果有什么问题,还希望大家可以指出,。。。