优惠券功能总结

优惠券功能总结

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

界面主要是: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 delegate;

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

你可能感兴趣的:(优惠券功能总结)