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快速搭建网站?

