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
这是一个专为移动设备优化的页面(即为了让你能够在 Google 搜索结果里秒开这个页面),如果你希望参与 V2EX 社区的讨论,你可以继续到 V2EX 上打开本讨论主题的完整版本。
V2EX 是创意工作者们的社区,是一个分享自己正在做的有趣事物、交流想法,可以遇见新朋友甚至新机会的地方。
V2EX is a community of developers, designers and creative people.