GitHub: https://github.com/lll1024/JVShopcart
这是一个具备常规功能并方便改造的购物车模型 一共包含五个模块:
JVShopcartViewController
: 购物车控制器 负责协调Model和View 只有100多行代码JVShopcartFormat
: 负责网络请求与逻辑处理JVShopcartTableViewProxy
: 作为控制器里边TableView的代理View
: 包括Cell、HeaderView、CountView(改变商品数的视图)、BottomView(控制器底部包含结算按钮的视图)Model
: 包含BrandModel和ProductModel两层首先将工程里边的JVShopcart文件夹拖入你的项目 然后就是开源库Vendor文件夹根据需求处理 Model是一定会改的 但是购物车的Model大同小异 其他的改动不会太大
关于JVShopcartViewController
,由于其遵循JVShopcartFormatDelegate协议,而协议里边的方法都是用@required
修饰的,所以必须要实现它;下面依次介绍这些方法:
- (void)shopcartFormatRequestProductListDidSuccessWithArray:(NSMutableArray *)dataArray;
- (void)shopcartFormatAccountForTotalPrice:(float)totalPrice
totalCount:(NSInteger)totalCount
isAllSelected:(BOOL)isAllSelected;
- (void)shopcartFormatSettleForSelectedProducts:(NSArray *)selectedProducts;
- (void)shopcartFormatHasDeleteAllProducts;
JVShopcartTableViewProxy
并刷新TableView。JVShopcartViewController
, 控制器拿着这些数据调用底部结算视图BottomView的configure方法并刷新TableView,就完成了UI更新。JVShopcartViewController
,但并不改变原数据源因为用户随时可能返回。关于JVShopcartFormat
,这个类主要负责网络请求与逻辑处理以及结果的回调。下面依次介绍这些方法:
- (void)requestShopcartProductList;
- (void)selectProductAtIndexPath:(NSIndexPath *)indexPath isSelected:(BOOL)isSelected;
- (void)selectBrandAtSection:(NSInteger)section isSelected:(BOOL)isSelected;
- (void)changeCountAtIndexPath:(NSIndexPath *)indexPath count:(NSInteger)count;
- (void)deleteProductAtIndexPath:(NSIndexPath *)indexPath;
- (void)starProductAtIndexPath:(NSIndexPath *)indexPath;
- (void)selectAllProductWithStatus:(BOOL)isSelected;
- (void)settleSelectedProducts;
以上如有帮助欢迎star GitHub: https://github.com/lll1024/JVShopcart