优惠券功能总结

优惠券功能总结

注:项目添加了优惠券功能,在此总结经验

界面主要是:UITableView
优惠卷的类型有4种,其中3种是样式相同,背景颜色不同,以下称为A1,A2,A3。另一种称为B。

开始的时候我是打算就用一个UITableViewCell类来完成这4种样式的。但是只能在拿到数据之后才能知道具体类型,所以我在给cell赋值数据的API里面创建布局控件。其中使用了CAGradientLayerCAShapeLayer

出现了一个奇怪的显示问题。
问题:在cell的数量较少,不能被tableView复用的时候,显示正常。在cell的数量较多,tableView能复用cell的时候,子layer的路径会出现变化

--

我并没解决好这个问题。而是使用了另一个类来搭建B的样式。

--

后来我想了一下,用一个类来做也可以,使用两个注册cellID。
UITableViewCell- initWithStyle:reuseIdentifier:方法中
根据 cellID 来搭建不同的样式。

--

实现方法:

创建一个优惠券基类 : CouponBaseCell
A样式的优惠券 : ACouponBaseCell : CouponBasseCell
B样式的优惠券 : BCouponBaseCell : CouponBaseCell

CouponBaseCell 声明 优惠券的相应API

/// 给优惠券数据
- (void)setCoponData:(CouponInfo *)data;
/// 设置优惠券类型
-  (void)setCoponType:(CouponType)type;
/// 设置优惠券状态
-  (void)setCoponState:(CouponState)state;

声明一个点击优惠券的协议 Protocol
CouponBaseCellDelegate

///点击优惠券
- (void)didSelecteCoupon:(CouponBaseCell *)copon;

CouponBaseCell 添加一个遵守CouponBaseCellDelegate协议的 id 类型的属性。

@property(nonatomic, weak) id <CouponBaseCellDelegate>delegate;

ACouponBaseCellBCouponBaseCell分别根据对应的需求实现这些API

©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容

  • 一、简介 <<UITableView(或简单地说,表视图)的一个实例是用于显示和编辑分层列出的信息的一种手段 <<...
    无邪8阅读 13,648评论 3 3
  • 1、通过CocoaPods安装项目名称项目信息 AFNetworking网络请求组件 FMDB本地数据库组件 SD...
    阳明AI阅读 16,038评论 3 119
  • Swift1> Swift和OC的区别1.1> Swift没有地址/指针的概念1.2> 泛型1.3> 类型严谨 对...
    cosWriter阅读 13,794评论 1 32
  • this的指向是不确定的,可以动态改变,这样设计可以让代码更加灵活,复用性也更高,由于this的指向是不确定的,如...
    刘圣凯阅读 1,326评论 0 0
  • 不知道是什么原因?近一段时期,总是会这样!一阵子激情满怀,动力十足,什么都想去实现;过了些时日,又有些百无聊赖,觉...
    小城情怀阅读 4,288评论 0 0