博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
ios21--xib例子
阅读量:5962 次
发布时间:2019-06-19

本文共 4864 字,大约阅读时间需要 16 分钟。

故事板控制器:

////  XMGViewController.m//  03-综合练习////  Created by xiaomage on 15/12/28.//  Copyright © 2015年 小码哥. All rights reserved.//#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/** *  懒加载 */- (NSArray *)dataArr{    if (_dataArr == nil) {        // 加载数据        // 1.获取全路径        NSString *dataPath = [[NSBundle mainBundle] pathForResource:@"shopData.plist" ofType:nil];        self.dataArr = [NSArray arrayWithContentsOfFile:dataPath];        // 字典转模型        // 创建临时数组        NSMutableArray *tempArray = [NSMutableArray array];        for (NSDictionary *dict in _dataArr) {            // 创建shop对象            XMGShop *shop = [XMGShop shopWithDict:dict];            // 把模型装入数组            [tempArray addObject:shop];        }        self.dataArr = tempArray;    }    return _dataArr;}// 初始化数据- (void)viewDidLoad {    [super viewDidLoad];}/** *  添加到购物车 * *  @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.创建一个商品*****************************/     XMGShopView *shopView = [XMGShopView shopView];    shopView.frame = CGRectMake(x, y, width, height);    // 设置数据    shopView.shop = self.dataArr[index];//set方法    [self.shopCarView addSubview:shopView]; /***********************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. 设置删除按钮的状态    self.removeButton.enabled = (self.shopCarView.subviews.count != 0);    }@end

xib界面:

xib界面对应的类:

////  XMGShopView.h#import 
@class XMGShop;@interface XMGShopView : UIView/** 数据模型 */@property (nonatomic, strong) XMGShop *shop;// 快速构造方法+ (instancetype)shopView;@end
////  XMGShopView.m#import "XMGShopView.h"#import "XMGShop.h"@interface XMGShopView ()@property (weak, nonatomic) IBOutlet UIImageView *iconView;//跟xib界面连线了的@property (weak, nonatomic) IBOutlet UILabel *titlelabel;//跟xib界面连线了的@end@implementation XMGShopView+ (instancetype)shopView{    //return [[[NSBundle mainBundle] loadNibNamed:@"XMGShopView" owner:nil options:nil] firstObject];  //XMGShopView是xib的名字    return [[[NSBundle mainBundle] loadNibNamed:NSStringFromClass(self) owner:nil options:nil] firstObject];}//- (void)awakeFromNib   //加子控件- (void)setShop:(XMGShop *)shop{    _shop = shop;        // 设置界面图片和文字    self.iconView.image = [UIImage imageNamed:shop.icon];    self.titlelabel.text = shop.name;}@end

xib界面的数据bean类:

////  XMGShop.h//  03-综合练习////  Created by xiaomage on 15/12/29.//  Copyright © 2015年 小码哥. All rights reserved.//#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;@end
////  XMGShop.m//  03-综合练习////  Created by xiaomage on 15/12/29.//  Copyright © 2015年 小码哥. All rights reserved.//#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];}@end

故事板:

本文转自农夫山泉别墅博客园博客,原文链接:http://www.cnblogs.com/yaowen/p/7469541.html,如需转载请自行联系原作者

你可能感兴趣的文章
vsftp
查看>>
Cloudera Hadoop 4系列实战课程(电商业日志流量分析项目)
查看>>
字符串,链表,树
查看>>
Linux学习笔记:MySQL主从同步
查看>>
Nginx错误日志(error_log)配置及信息详解
查看>>
Highcharts 学习笔记
查看>>
高性能python编程之协程
查看>>
PHP编译过程中常见错误信息的解决方法
查看>>
redis服务端及php客户端安装方法
查看>>
定时删除文件
查看>>
mysql主从同步
查看>>
springmvc 高级3 之 统一异常处理
查看>>
我的友情链接
查看>>
memcache安装
查看>>
(总结)Web性能压力测试工具之ApacheBench(ab)详解
查看>>
我的友情链接
查看>>
AWT查看oracle历史sql语句执行
查看>>
支付宝、微信、QQ红包大战,商家选谁更靠谱?
查看>>
人工智能:智慧型手机的未来
查看>>
为何时尚品牌的“IP+”只能在京东完成?
查看>>