[IOS笔记]懒加载—购物车加载数组和字典

来源:互联网 发布:qq空间营销软件 编辑:程序博客网 时间:2024/05/18 04:51


////  ViewController.m//  ShoppingCart////  Created by cdj on 17/9/8.//  Copyright © 2017年 ue. All rights reserved.//#import "ViewController.h"@interface ViewController ()@property (weak, nonatomic) IBOutlet UIView *shopCarView;@property (weak, nonatomic) IBOutlet UIButton *addButton;@property (weak, nonatomic) IBOutlet UIButton *removeButton;@property (nonatomic, strong) NSArray  *gDataArr;@end@implementation ViewController-(NSArray *)gDataArr{    if(_gDataArr == nil){//        加载数据        _gDataArr = @[                     @{@"name":@"单肩包", @"icon":@"danjianbao"},                     @{@"name":@"钱包", @"icon":@"qianbao"},                     @{@"name":@"链条包", @"icon":@"liantiaobao"},                     @{@"name":@"手提包", @"icon":@"shoutibao"},                     @{@"name":@"双肩包", @"icon":@"shuangjianbao"},                     @{@"name":@"斜挎包", @"icon":@"xiekuabao"}];    }    return _gDataArr;}/* 懒加载: 1作用:(1)用到的时候再加载;(2)全局只被加载一次 (3)全局都能使用 2过程:(1)重写成员变量的get方法;(2)再get方法中判断:如果为空酒加载数据,否则直接返回数据  */- (void)viewDidLoad {    [super viewDidLoad];    /*    NSArray <NSDictionary *> *dataArr = @[                                          @{@"name":@"单肩包", @"icon":@"danjianbao"},                                          @{@"name":@"钱包", @"icon":@"qianbao"},                                          @{@"name":@"链条包", @"icon":@"liantiaobao"},                                          @{@"name":@"手提包", @"icon":@"shoutibao"},                                          @{@"name":@"双肩包", @"icon":@"shuangjianbao"},                                          @{@"name":@"斜挎包", @"icon":@"xiekuabao"}];    self.gDataArr = dataArr; */}//添加到购物车- (IBAction)add:(UIButton *)button {    //    1.总列数    NSInteger allCols = 3;//    2.商品的宽度    CGFloat width = 80;    CGFloat height = 100;//    3.求水平间距    CGFloat hMargin = (self.shopCarView.frame.size.width - allCols * width)/(allCols -1);    CGFloat vMargin = (self.shopCarView.frame.size.height - 2 * height)/1;//    4.用subview的个数代替索引    NSInteger index = self.shopCarView.subviews.count;    //    4.求出x值    CGFloat x = (hMargin + width) * (index % allCols);    CGFloat y = (vMargin + height) * (index / allCols);        //    5创建商品的view    UIView *shopView = [[UIView alloc] init];    shopView.frame = CGRectMake(x, y, width, height);    shopView.backgroundColor = [UIColor greenColor];        [self.shopCarView addSubview:shopView];    //    6创建商品的UIImageView对象    UIImageView *iconView = [[UIImageView alloc] init];    iconView.frame = CGRectMake(0, 0, width, width);    iconView.backgroundColor = [UIColor purpleColor];    [shopView addSubview:iconView];    //    7创建商品的label对象    UILabel *titleLabel = [[UILabel alloc] init];    titleLabel.frame = CGRectMake(0, width, width, height - width);    titleLabel.backgroundColor = [UIColor yellowColor];    titleLabel.textAlignment = NSTextAlignmentCenter;    [shopView addSubview:titleLabel];    //    8设置数据//    方式一//    iconView.image = [UIImage imageNamed:@"danjianbao"];//    titleLabel.text = @"单肩包";    //    方式二 if else if//    方式三 数组//    NSArray<NSString *> *imageNames = @[@"danjianbao", @"qianbao", @"liantiaobao", @"shoutibao", @"shuangjianbao", @"xiekuabao"];//    NSArray<NSString *> *titleNames = @[@"单肩包", @"钱包", @"链条包", @"手提包", @"双肩包", @"斜挎包"];//    iconView.image = [UIImage imageNamed:imageNames[index]];//    titleLabel.text = titleNames[index];    //    方式四:数组+字典=类似于结构体//    NSArray <NSDictionary *> *dataArr = @[//            @{@"name":@"单肩包", @"icon":@"danjianbao"},//            @{@"name":@"钱包", @"icon":@"qianbao"},//            @{@"name":@"链条包", @"icon":@"liantiaobao"},//            @{@"name":@"手提包", @"icon":@"shoutibao"},//            @{@"name":@"双肩包", @"icon":@"shuangjianbao"},//            @{@"name":@"斜挎包", @"icon":@"xiekuabao"}];//    NSDictionary *dict = dataArr[index];//    iconView.image = [UIImage imageNamed:dict[@"icon"]];//    titleLabel.text = dict[@"name"];    //    方式五//    NSDictionary *dict = self.gDataArr[index];//    iconView.image = [UIImage imageNamed:dict[@"icon"]];//    titleLabel.text = dict[@"name"];    //    方式六:懒加载    NSDictionary *dict = self.gDataArr[index];    iconView.image = [UIImage imageNamed:dict[@"icon"]];    titleLabel.text = dict[@"name"];        //    设置按钮的状态    if (index == 5) {        button.enabled = NO;    }    //    删除按钮的状态    self.removeButton.enabled = YES;         }//从购物车移除- (IBAction)remove:(UIButton *)button {    //    1删除最后一个商品    UIView *lastShowView = [self.shopCarView.subviews lastObject];    [lastShowView removeFromSuperview];    //    2设置索引的值     self.addButton.enabled = YES;          if (self.shopCarView.subviews.count == 0) {        self.removeButton.enabled = NO;    }    }@end