zoukankan      html  css  js  c++  java
  • ios15--综合小例子

    //
    //  XMGViewController.m,控制器类
    
    #import "XMGViewController.h"
    #import "XMGShop.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
    /**
     *  懒加载
     */
    - (NSArray *)dataArr{
        if (_dataArr == nil) {
            // 加载数据
            // 1.获取全路径
            NSString *dataPath = [[NSBundle mainBundle] pathForResource:@"shopData.plist" ofType:nil];//Supporting Files下面的shopData.plist文件。
            self.dataArr = [NSArray arrayWithContentsOfFile:dataPath];  //dataPath = @"/Users/mctc/Library/Developer/CoreSimulator/Devices/4E7E6AB7-BB75-4C2C-9D87-21A0369A3DD6/data/Containers/Bundle/Application/A855282B-7D1A-450A-B3C3-8ACE93443577/03-综合练习.app/shopData.plist"    0x00007fafe150ef70
            NSLog(@"%@",self.dataArr);  //调用了get方法。
            /*(
            {
                icon = danjianbao;
                name = "U5355U5305";
            },
            {
                icon = qianbao;
                name = "U94b1U5305";
            })*/
            
            // 字典转模型对象
            // 创建临时数组
            NSMutableArray *tempArray = [NSMutableArray array];
            for (NSDictionary *dict in _dataArr) {
                // 创建shop对象
                /*
    //            XMGShop *shop = [[XMGShop alloc] initWithIcon:dict[@"icon"] name:dict[@"name"]];
    //            XMGShop *shop = [XMGShop shopWithIcon:dict[@"icon"] name:dict[@"name"]];
    //            shop.name = dict[@"name"];
    //            shop.icon = dict[@"icon"];
                 */
                XMGShop *shop = [XMGShop shopWithDict:dict];
                // 把模型装入数组
                [tempArray addObject:shop];
            }
            self.dataArr = tempArray;
        }
        return _dataArr;
    }
    
    // 初始化数据
    - (void)viewDidLoad {
        [super viewDidLoad];
       /*类前缀
        // Foundation
        NSString;
        NSArray;
        NSDictionary;
        NSURL;
        
        // UIKit
        UIView;
        UIImageView;
        UISwitch;
        */
    }
    
    /**
     *  添加到购物车
     *
     *  @param button 按钮
     */
    - (IBAction)add:(UIButton *)button {
    /***********************1.定义一些常量*****************************/
        // 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. 设置索引
        NSInteger index = self.shopCarView.subviews.count;
        // 5.求出x值
        CGFloat x = (hMargin + width) * (index % allCols);
        CGFloat y = (vMargin + height) * (index / allCols);
        
    /***********************2.创建一个商品*****************************/
      // 1.创建商品的view
        UIView *shopView = [[UIView alloc] init];
        
      // 2.设置frame
        shopView.frame = CGRectMake(x, y, width, height);
        
      // 3.设置背景颜色
        shopView.backgroundColor = [UIColor greenColor];
        
      // 4.添加到购物车
        [self.shopCarView addSubview:shopView];
        
      // 5.创建商品的UIImageView对象
        UIImageView *iconView = [[UIImageView alloc] init];
        iconView.frame = CGRectMake(0, 0, width, width);
        iconView.backgroundColor = [UIColor blueColor];
        [shopView addSubview:iconView];
        
      // 6.创建商品标题对象
        UILabel *titleLabel = [[UILabel alloc] init];
        titleLabel.frame = CGRectMake(0, width, width, height - width);
        titleLabel.backgroundColor = [UIColor yellowColor];
        titleLabel.textAlignment = NSTextAlignmentCenter; // 居中
        [shopView addSubview:titleLabel];
        
    /***********************3.设置数据*****************************/
        // 设置数据
        XMGShop *shop = self.dataArr[index];
        iconView.image = [UIImage imageNamed:shop.icon];
        titleLabel.text = shop.name;
        
        
    /***********************4.设置按钮的状态*****************************/
    
        button.enabled = (index != 5);
        
        // 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. 设置删除按钮的状态
        /*
        if (self.shopCarView.subviews.count == 0) {
            self.removeButton.enabled = NO;
        }
         */
        self.removeButton.enabled = (self.shopCarView.subviews.count != 0);
        
    }
    @end
    //
    //  XMGShop.h
    
    #import <Foundation/Foundation.h>
    
    @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;
    
    @end
    //
    //  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];//self alloc创建了一个类对象。
    }
    
    @end
  • 相关阅读:
    oracle循环语句
    解决使用Properties读取中文乱码问题
    oracle常用& to_date()怎么转换带am pm的时间格式
    distinct 多列详解
    javascript中遍历EL表达式List集合中的值
    最近一段时间代码汇总
    JAVA基础之对象的初始化
    求解圆圈中最后剩下的数字
    删除有序链表中的重复结点
    构造二叉树,并求解树的高度
  • 原文地址:https://www.cnblogs.com/yaowen/p/7466604.html
Copyright © 2011-2022 走看看