控制器:
// XMGViewController.h
#import
@interface XMGViewController : UIViewController
// XMGViewController.m
#import "XMGViewController.h"
#import "XMGShop.h"
#import "XMGShopView.h"
@interface XMGViewController ()
// 购物车
@property (weak, nonatomic) IBOutlet UIView *shopCarView;
// 添加按钮
@property (weak, nonatomic) IBOutlet UIButton *addButton;
// 删除按钮
@property (weak, nonatomic) IBOutlet UIButton *removeButton;
/** 数据数组 */
@property (nonatomic, strong) NSArray *dataArr;
@end
@implementation XMGViewController
/**
* 懒加载,get方法
*/
// 初始化数据
/**
* 添加到购物车
*
* @param button 按钮
*/
/***********************2.创建一个商品*****************************/
/*
XMGShopView *shopView = [[XMGShopView alloc] init];
shopView.frame = CGRectMake(x, y, width, height);
// 设置数据
XMGShop *shop = self.dataArr[index];
shopView.shop = shop;
[self.shopCarView addSubview:shopView];
*/
XMGShopView \*shopView = \[XMGShopView shopViewWithShop:self.dataArr\[index\]\];
shopView.frame = CGRectMake(x, y, width, height);
\[self.shopCarView addSubview:shopView\];
/***********************3.设置数据*****************************/
// 设置数据
// XMGShop *shop = self.dataArr[index];
// [shopView setIcon:shop.icon];
// [shopView setName:shop.name];
/***********************4.设置按钮的状态*****************************/
button.enabled = (index != );
// 5.设置删除按钮的状态
self.removeButton.enabled = YES;
}
/**
* 从购物车中删除
*
* @param button 按钮
*/
(IBAction)remove:(UIButton *)button {
// 1. 删除最后一个商品
UIView *lastShopView = [self.shopCarView.subviews lastObject];
[lastShopView removeFromSuperview];
// 3. 设置添加按钮的状态
self.addButton.enabled = YES;
// 4. 设置删除按钮的状态
self.removeButton.enabled = (self.shopCarView.subviews.count != );
}
@end
自定义控件:
// XMGShopView.h
#import
@class XMGShop;
@interface XMGShopView : UIView
/** 商品模型 */
@property (nonatomic, strong) XMGShop *shop;
// 构造方法
// XMGShopView.m
#import "XMGShopView.h"
#import "XMGShop.h"
@interface XMGShopView ()
/** 图片控件 */
@property (nonatomic, weak) UIImageView *iconView;
/** 标题控件 */
@property (nonatomic, weak) UILabel *titleLabel;
@end
@implementation XMGShopView
/**
* 初始化子控件(不要设置frame)
*
*/
//构造方法,对象方法
/**
* 初始化
*/
(void)setUp{
// 1.创建商品的UIImageView对象
UIImageView *iconView = [[UIImageView alloc] init];
iconView.backgroundColor = [UIColor blueColor];
[self addSubview:iconView];
_iconView = iconView;
// 2.创建商品标题对象
UILabel *titleLabel = [[UILabel alloc] init];
titleLabel.backgroundColor = [UIColor yellowColor];
titleLabel.textAlignment = NSTextAlignmentCenter; // 居中
[self addSubview:titleLabel];
_titleLabel = titleLabel;
}
/**
* 布局子控件(可以拿到frame)
*/
(void)layoutSubviews{
// 0.一定要调用super
[super layoutSubviews];
// 1.获取当前控件的尺寸
CGFloat width = self.frame.size.width;
CGFloat height = self.frame.size.height;
// 2.设置子控件的frame
self.iconView.frame = CGRectMake(, , width, width);
self.titleLabel.frame = CGRectMake(, width, width, height - width);
}
/**
* 重写set方法:只要外边传数据就会调用
* 作用:设置数据
*/
(void)setShop:(XMGShop *)shop{
_shop = shop;
// 设置数据
self.iconView.image = [UIImage imageNamed:shop.icon];
self.titleLabel.text = shop.name;
}
bean:
// XMGShop.h
#import
@interface XMGShop : NSObject
/** 图片的名称 */
@property (nonatomic, copy) NSString *icon;
/** 商品的名称 */
@property (nonatomic, copy) NSString *name;
// 提供构造方法
/*
(instancetype)initWithIcon: (NSString *)icon name: (NSString *)name;
(instancetype)shopWithIcon: (NSString *)icon name: (NSString *)name;
*/
(instancetype)initWithDict:(NSDictionary *)dict;
(instancetype)shopWithDict:(NSDictionary *)dict;
// XMGShop.m
#import "XMGShop.h"
@implementation XMGShop
/*
(instancetype)initWithIcon:(NSString *)icon name:(NSString *)name{
if (self = [super init]) {
self.icon = icon;
self.name = name;
}
return self;
}
(instancetype)shopWithIcon:(NSString *)icon name:(NSString *)name{
return [[self alloc] initWithIcon:icon name:name];
}
*/
(instancetype)initWithDict:(NSDictionary *)dict{
if (self = [super init]) {
self.icon = dict[@"icon"];
self.name = dict[@"name"];
}
return self;
}
(instancetype)shopWithDict:(NSDictionary *)dict{
return [[self alloc] initWithDict:dict];
}
手机扫一扫
移动阅读更方便
你可能感兴趣的文章