iOS xib使用的注意事项
1.xib的通常的使用步骤
1.1 新建1个类,用来描述这个xib (假定继承自UIView,且类名是DIYView)
1.2 新建1个xib,文件名也是DIYView,往里面拖一个UIView,设置UIView的属性-Class为DIYView
1.3 往xib里拖1个长按的手势识别,鼠标右键刚刚拖进来的UIView,gesture Recognizer和刚才拖进来的长按手势识别做连线
1.4 DIYView.h 提供一个方法类方法: + (instancetype)diyView;
DIYView.m 实现diyView:
+ (instancetype)diyView
{
return [[[NSBundle mainBundle] loadNibNamed:@"DIYView" owner:nil options:nil] lastObject];
}
1.5 在控制器中,新增这个用xib定义的view
DIYView *diy = [DIYView diyView];
[self.view addsubView:diy];
1.6 最后运行程序,程序崩溃
1.7 分析报错原因:
[DIYView diyView] 返回的是手势,不是预期的uiview.因为最后添加的是长按手势.
1.8 总结:
使用xib时需要注意lastObject或者firstObject返回的到底是什么
1.9 规避方法
可以通过打印数组看看数组中元素的排列顺序
NSArray *array = [[NSBundle mainBundle] loadNibNamed:@"DIYView" owner:nil options:nil]
NSLog(@"%@",array);
2.控制器初始化
DiyViewController *diyVC = [[DiyViewController alloc] init ];
2.1 控制器默认会自动找对应的xib来创建view: 会先找去掉Controller的名字的xib,如果没找到,会去找同名的xib
像上面这个控制器初始化时,系统首先会找文件名是 DiyView 的xib作为自己的view,如果没找到才去找文件名是 DiyViewController 的xib作为自己的view
2.2 如果项目中存在DiyView.xib,那么xib的file's Owner的class要设为DiyViewController,然后设置file's Owner的Outlets的view要和xib的view连线,否则会报错