使用NIB文件创建UIVEW

使用NIB文件创建UIVEW

(1)之前使用NIB来创建UIVIEW的话,一般是创建一个UIVIEW,然后再创建一个NIB文件,将其"show the identity inspector"->"custom class"更改成自己创建的那个类名,让NIB文件和.h .m文件建立起关系,然后就可以以拖线的方式对NIB文件上的控件建立属性了,

其他方法是:(其实就是通过NSBundle mainBundle是通过加载XIB文件) 

//创建与使用
MyView *testView = [[[NSBundle mainBundle]loadNibNamed:@"MyView" owner:self options:nil]firstObject];
testView.myImageView.image = [UIImage imageNamed:@"animation.gif"];//支持GIF格式的,图片不会动的
testView.myImageView.image = [UIImage imageNamed:@"test"];//可以只写一个图片名字,不写后缀名也行
testView.myImageView.image = [UIImage imageNamed:@"image.jpg"];//其他格式的得写“图片名+后缀名”
testView.myLabel.text = @"测试数据";
[self.view addSubview:testView];

(2) 利用代码来创建,在initWithFrame方法里将其加到self上(但是在使用的时候遇到两个问题,第一个问题:这个类里我还涉及到向服务器请求信息,当信息被请求下来的时候,需要更新页面,但是却更新不了,最后发现,应该取到那个视图,view = [self viewWithTag:6666],更新那个上面的控件。第二个问题:添加不上去手势,即使userInteractonEnabled=YES 也不会去执行那个手势方法,很是纳闷!)- (id)initWithFrame:(CGRect)frame

{
self = [super initWithFrame:frame];
if (self) {
UIView *view = [[[NSBundle mainBundle]loadNibNamed:@"VipView" owner:self options:nil]firstObject];

view.tag = 6666;
[self addSubview:view];
}
return self;
}

(3) 创建NIB基类(一种貌似很厉害的方法哦!)

大致的思路:创建一个父类,用于加载当前对象的XIB文件,当创建子类对象时,先去执行父类里的方法,先会加载对应的XIB文件,然后再其进行属性设置。DEMO

父类

@interface GENibView : UIView
@end

#import "GENibView.h"
@implementation GENibView

- (id)initWithFrame:(CGRect)frame
{
self = [[[NSBundle mainBundle] loadNibNamed:NSStringFromClass([self class]) owner:self options:nil] firstObject];

if (self) {

self.frame = frame;
}
return self;
}

@end

子类

.h

@interface VipView : GENibView
@property (copy, nonatomic) NSString *name;
@end

.m

#import "VipView.h"
@interface VipView ()
@property (strong, nonatomic) IBOutlet UILabel *nameLabel;
@end

@implementation VipView

- (id)initWithFrame:(CGRect)frame
{
self =
[super initWithFrame:frame];
if (self) {
// Initialization code
}
return self;
}

-(void)setName:(NSString *)name{
_nameLabel.text = name;
}

-(NSString *)name{
return _nameLabel.text;
}

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值