UI笔记

UI基础控件入门2

2015-03-22  本文已影响224人  冷漠叻荭颜

字典转模型对象

@interface LNAppInfo : NSObject
@property (nonatomic, copy) NSString *icon;
@property (nonatomic, copy) NSString *name;
@end

@implementation LNAppInfo
// 构造方法初始化类内部的name和icon属性
- (instancetype)initWithDict:(NSDictionary *)dict
{
    if (self = [super init]) {
        [self setValuesForKeysWithDictionary:dict];
    }
    return self;
}
// 类方法,快速初始化类的对象
+ (instancetype)appInfoWithDict:(NSDictionary*)dict
{
    return [[self alloc] initWithDic:dict];
}
// 类方法,返回数据
+ (NSArray *)appInfosList
{
    // 1 获取当前应用的bundle
    NSBundle *bundle = [NSBundle mainBundle];
    // 2 plist文件的路径
    NSString *path = [bundle pathForResource:@"app.plist" ofType:nil];
    // 3 从plist中加载字典数组
    NSArray *dictArray = [NSArray arrayWithContentsOfFile:path];
    // 4 存储appInfo的临时数组
    NSMutableArray *appInfos = [NSMutableArray array];
    // 5 遍历字典数组,取出每一个字典转换成模型
    for (NSDictionary *dict in dictArray) {
        //调用类方法快速初始化对象
        LNAppInfo *appInfo = [LNAppInfo appInfoWithDict:dict];
        //把模型添加到模型数组中
        [appInfos addObject:appInfo];
    }
    return appInfos;
}
@end

// 在控制器中加载懒模型数据
- (NSArray *)appInfos
{
    if(_appInfos == nil) {
        _appInfos = [LNAppInfo appInfosList];
    }
​    return _appInfos;
}

xib的使用

@property(weak, nonatomic) IBOutlet UIImageView *iconView;
@property(weak, nonatomic) IBOutlet UILabel *nameView;
@property (nonatomic, strong) CZAppInfo *appInfo;

+ (instancetype)appInfoView
{
    NSBundle *bundle = [NSBundle mainBundle];
    LNAppInfoView *view = [[bundle loadNibNamed:@"LNAppInfoView" owner:nil options:nil] lastObject];
    return view;
}
- (void)setAppInfo:(CZAppInfo *)appInfo
{
    _appInfo = appInfo;
    self.nameView.text = appInfo.name;
    self.iconView.image = [UIImage imageNamed:appInfo.icon];
}

// 控制器改造
// 从自定义view中加载子view
LNAppInfoView *view = [LNAppInfoView appInfoView];
// 取得当前遍历到的应用信息
LNAppInfo *appInfo = self.appInfos[i];
// 给自定义view的模型属性赋值(setter方法给自定义view内部的子控件赋值)
view.appInfo = appInfo;
上一篇下一篇

猜你喜欢

热点阅读