xib的优势不多说了吧,方便快捷,虽然也有不可忽视的缺点,但是现在苹果设备内存、处理器越来越牛,那点缺点和快捷舒服的开发,是不是就可以忽略了?
但是作为一个资深开发者,也常常会忽视一些问题,导致我们弃用Xib,例如Xib创建UItableViewCell,因为创建时就有Xib勾选项,所以我们可以不用管,直接勾选来创建;但是,遇见自定义View时呢?遇见大大小小的问题常常觉得还没有代码写着方便,下面就记录下我的学习的那点经验吧。
-
创建代码文件
-
创建Xib文件
-
关联文件
下面添加按钮,关联点击事件
这里就有file’s owner尽量不要设置的原因了
细心的可能已经看出问题了,继续往下看
设置按钮的点击方法- (IBAction)btnClicked:(id)sender
运行,点击按钮,看下调用栈:
明显不对,我要调用的是CustomView里的- (IBAction)btnClicked:(id)sender
方法,结果调用的是ViewController类里的方法
看下ViewController里,原来有个同名方法
但是我设置的File’s owner是CustomView啊,我就改动了CustomView里的关联方法名,再次运行,点击按钮
这次验证了我的猜想,即使设置了file’s owner,默认的也不是CustomView,并不能寻找方法实现的关联类 ,而是找到了控制器
所以,尽量不去设置file’s owner, 有谁知道原因欢迎留言评论。
如果非要设置,不是不可以
设置方法的时候就要注意,方法的Object对象了,选择自定义的View名,不要选择file’s owner,然后就能愉快的玩耍了
使用的时候
CustomView *view = [[NSBundle mainBundle]loadNibNamed:@"xib的名字" owner:self options:nil].lastObject;