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连线,否则会报错

                   

原文地址:https://www.cnblogs.com/oumygade/p/4243637.html