IOS购物车界面实现效果示例

发布时间 - 2026-01-10 23:04:44    点击率:

购物软件不可避免有添加购物车的页面,那么购物车功能是怎么实现的呐?这里提供一种简单的思路,插入本地数据库。

先看效果

页面结构

本页面是由一个tableview和底部的底部的bottomView构成

底部的bottomView上有按钮,也可以添加其他属性,比如总价格,总重量等参数。

代码结构


思路

看到这样的需求,我想到的是插入本地数据库,每一条数据都有对应的id和其他的例如价格等的参数,根据id插入本地是一条可行的方法,为了避免刷新的时候选中的单元格和没选中的单元格的复用,我们需要对按钮做一点操作。

@interface CustomButton : UIButton
@property (nonatomic,assign)NSInteger indexPathRow;
@end

在这个GoodCell里面自定义协议,为了取到某一行的值。

最重要的是选中与没选中的按钮要显示不同的颜色

#pragma mark - selectedBtnAction
-(void)selectedBtnAction:(CustomButton *)btn
{
  btn.selected=!btn.selected;
  [self.delegate GoodsCellDelegateWithIndexPath:btn.indexPathRow];
}

-(void)configWithModel:(GoodsModel *)model{
  self.model = model;
  if (model.btnIsSelected==YES) {
    [self.selectedBtn setImage:[UIImage imageNamed:@"sendcar_selected"] forState:UIControlStateNormal];
  }else{
    [self.selectedBtn setImage:[UIImage imageNamed:@"sendcar_unselected"] forState:UIControlStateNormal];
  }
  //运单号
  self.cardLabel.text = [NSString stringWithFormat:@"运单号:%@",self.model.Ticket_No];
}

控制器界面

代理协议的实现

#pragma mark - delegate
-(void)GoodsCellDelegateWithIndexPath:(NSInteger)indexPathRow
{

  GoodsModel *cacheModel = self.dataArr[indexPathRow];
  if (cacheModel.btnIsSelected) {
//    NSLog(@"YES==%@",cacheModel.Ticket_No);
    cacheModel.btnIsSelected = NO;
  } else {
//    NSLog(@"NO==%@",cacheModel.Ticket_No);
    cacheModel.btnIsSelected = YES;
  }
  //插入---删除  反复切换
  [self.dataManager insertDataFromModel:cacheModel Ticket_No:cacheModel.Ticket_No];
   //每次执行插入删除操作就会刷新底部的车辆的按钮
  [self reloadBottonViewUI];
  [self.tableView reloadRowsAtIndexPaths:@[[NSIndexPath indexPathForRow:indexPathRow inSection:0]] withRowAnimation:UITableViewRowAnimationNone];
}
#pragma mark - 刷新底部的选车的数量  reloadBottonViewUI
-(void)reloadBottonViewUI
{
  if ([self.dataManager getAllGoodsArrCount]>0) {
    [self.toSelectCarBtn setTitle:[NSString stringWithFormat:@"去发车(%ld)",(long)[self.dataManager getAllGoodsArrCount]] forState:UIControlStateNormal];
  }else{
    [self.toSelectCarBtn setTitle:@"去发车" forState:UIControlStateNormal];
  }
}

去往下个页面需要选中的有数据

#pragma mark - 去选车
-(void)toSelectCarBtnAction
{
  if ([self.dataManager getAllGoodsArrCount]>0) {
    //do something
    [self showSingleAlertViewWith:self title:@"提示" message:@"do something"];
  }else{
    [self showSingleAlertViewWith:self title:@"提示" message:@"请选择物品"];
  }
}

代码下载:PurchuseCar_Demo_jb51.rar

以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持。


# ios购物车实现  # ios  # 购物车实现demo  # 购物车界面  # iOS实现自定义购物车角标显示购物数量(添加商品时角标抖动 Vie)  # iOS添加购物车动画效果示例  # iOS实现电商购物车界面示例  # iOS搭建简易购物车页面  # 购物车  # 单元格  # 的是  # 就会  # 都有  # 在这个  # 是由  # 是怎么  # 其他的  # 上有  # 自定义  # 请选择  # 不可避免  # 最重要的是  # 本页面  # 下个  # 为了避免  # 先看  # 大家多多  # 复用 


相关栏目: 【 网站优化151355 】 【 网络推广146373 】 【 网络技术251813 】 【 AI营销90571


相关推荐: Python正则表达式进阶教程_复杂匹配与分组替换解析  MySQL查询结果复制到新表的方法(更新、插入)  原生JS实现图片轮播切换效果  如何在宝塔面板中修改默认建站目录?  SQL查询语句优化的实用方法总结  利用python获取某年中每个月的第一天和最后一天  作用域操作符会触发自动加载吗_php类自动加载机制与::调用【教程】  Javascript中的事件循环是如何工作的_如何利用Javascript事件循环优化异步代码?  详解Android——蓝牙技术 带你实现终端间数据传输  Laravel的辅助函数有哪些_Laravel常用Helpers函数提高开发效率  家族网站制作贴纸教程视频,用豆子做粘帖画怎么制作?  js实现点击每个li节点,都弹出其文本值及修改  C++时间戳转换成日期时间的步骤和示例代码  Laravel观察者模式如何使用_Laravel Model Observer配置  悟空识字如何进行跟读录音_悟空识字开启麦克风权限与录音  如何在云主机快速搭建网站站点?  JS去除重复并统计数量的实现方法  Laravel如何使用Contracts(契约)进行编程_Laravel契约接口与依赖反转  详解jQuery停止动画——stop()方法的使用  韩国网站服务器搭建指南:VPS选购、域名解析与DNS配置推荐  如何快速搭建高效WAP手机网站?  如何在IIS中新建站点并配置端口与物理路径?  矢量图网站制作软件,用千图网的一张矢量图做公司app首页,该网站并未说明版权等问题,这样做算不算侵权?应该如何解决?  悟空浏览器如何设置小说背景色_悟空浏览器背景色设置【方法】  悟空识字怎么关闭自动续费_悟空识字取消会员自动扣费步骤  如何快速搭建虚拟主机网站?新手必看指南  php后缀怎么变mp4格式错误_修改扩展名提示格式不对怎么办【技巧】  Win11怎样安装网易有道词典_Win11安装词典教程【步骤】  Angular 表单中正确绑定输入值以确保提交与验证正常工作  在Oracle关闭情况下如何修改spfile的参数  如何快速启动建站代理加盟业务?  如何快速生成专业多端适配建站电话?  google浏览器怎么清理缓存_谷歌浏览器清除缓存加速详细步骤  魔方云NAT建站如何实现端口转发?  如何在建站之星网店版论坛获取技术支持?  Python文本处理实践_日志清洗解析【指导】  如何在企业微信快速生成手机电脑官网?  如何在自有机房高效搭建专业网站?  Laravel事件和监听器如何实现_Laravel Events & Listeners解耦应用的实战教程  Laravel DB事务怎么使用_Laravel数据库事务回滚操作  微信小程序 require机制详解及实例代码  如何在 React 中条件性地遍历数组并渲染元素  Laravel辅助函数有哪些_Laravel Helpers常用助手函数大全  什么是javascript作用域_全局和局部作用域有什么区别?  nginx修改上传文件大小限制的方法  谷歌浏览器下载文件时中断怎么办 Google Chrome下载管理修复  图册素材网站设计制作软件,图册的导出方式有几种?  Laravel如何实现API版本控制_Laravel API版本化路由设计策略  Linux系统命令中tree命令详解  如何在搬瓦工VPS快速搭建网站?