XIB学习
重点
/**
除去图片资源,其他的所有资源都需要bundle来读取
*/
//1、读取文件
NSBundle * bundle = [NSBundle mainBundle];
//2、读取xib文件,创建xib中描述的所有对象,并且按顺序放到数组中返回
NSArray *objs = [bundle loadNibNamed:@"FLAppView" owner:nil options:nil];
//3、创建View
UIView *appView = [objs lastObject];
appView.frame = CGRectMake(appX, appY, appW, appH);
//4、添加View
[self.view addSubview:appView];
//5、设置数据
FLApp *app = self.apps[index];
/**
重点:拿到我们的对应的xib对应的每个View
*/
//第一种写法
UIImageView *iconView1 = appView.subviews[0];
//第二种写法:绑定Tag
UIImageView *iconView2 = (UIImageView *)[appView viewWithTag:10];
--------------------------------------------------------------------------------------------------------
封装,将xib的View封装起来,
关键总结:
1、新建一个继承UIView的自定义View,假设类名叫做(FLAppView)
2、新建一个FLAppView.xib的名字的xib文件描述FLAppView内部的结构
3、修改UIView的类型为我们的FLAppView的类型(能够拖线)
4、将内部的子控件跟FLAppView的属性连线
5、FLAppView提供一个模型属性
6、重写模型属性的set方法,因为set方法中可以拿到外界传递的数据模型
7、把模型数据拆开,分别设置数据对应的子控件中
8、提供一个创建类FLAppView的类方法,将读取XIB文件的代码屏蔽起来
***************************************
重点:将XIB的布局的View改成对应的类名的View
写一个类扩展,将所有的属性写到类扩展中间去
@interface FLAppView()
@property.....
@end
实现方法
声明
#import <UIKit/UIKit.h>
#import "FLApp.h"
@interface FLAppView : UIView
@property(nonatomic ,strong) FLApp *app;
+ (instancetype)appView;
@end
***************************************
实现
#import "FLAppView.h"
@interface FLAppView()
@property (weak, nonatomic) IBOutlet UIImageView *iconView;
@property (weak, nonatomic) IBOutlet UILabel *nameLabel;
@end
@implementation FLAppView
+ (instancetype)appView
{
//1、读取文件
NSBundle *bundle = [NSBundle mainBundle];
//2、读取xib文件,创建xib中描述的所有对象,并且按顺序放到数组中返回
NSArray *objs = [bundle loadNibNamed:@"FLAppView" owner:nil options:nil];
//3、创建View
return [objs lastObject];
}
- (void)setApp:(FLApp *)app
{
_app = app;
self.iconView.image = [UIImage imageNamed:app.icon];
self.nameLabel.text = app.name;
}
@end
***************************************
XIB学习
最新推荐文章于 2018-03-14 10:37:43 发布