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


//
//  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





















































  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值