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);

时间: 2024-08-09 02:03:49

iOS xib使用时注意的相关文章

iOS ARC使用时注意事项以及报错解决方法

1.报错The current deployment target does not support automated __weak references 这个错误是说支持的iOS版本比较低不支持weak关键字,要将其换成   unsafe_unretained   问题就解决了.

iOS xib View宽高不能改变

IOS - xib(Interface Builder,view) - can't change view size(view不能改变大小问题) 今天在试着swift语言写个demo,,当中遇到了这个问题,分享一下 当我们自己定义tableview.collectionview的cell,也有时候我们要自己定义窗体xib,但创建xib后,其height.width不可改动. 这时问题就来了.怎么才干使我们的自己定义xib宽高可改动: 项目中创建xib,单独的view时, 方法: 默认Simula

iOS XIB文件和UIViewController关联

1.在Cocoa Touch中创建ZYViewController视图控制器,在User Interface中创建一个view的bluleView.xib文件 2.点击bluleView.xib,然后Option+Command+3打开身份检查器,将默认的NSObject改成ZYViewController 3.在bluleView.xib中,按住Control键把File's Owner图标拖到view图标上,然后选择view,这样就使bluleView.xib和ZYViewControlle

IOS - xib(Interface Builder,view) - can't change view size(view不能改变大小问题)

很多时候,我们自定义tableview.collectionview的cell,也有时候我们要自定义窗口xib,但创建xib后,其height.width不可修改. 这时问题就来了,怎么才能使我们的自定义xib宽高可修改: 项目中创建xib,单独的view时, 方法: 默认Simulated metric中Size:inferred(推断),则view的height.width不可改变: 修改为Size:Freeform,现在我们的xib view 宽高可修改了. 学习并转载:http://ip

protobuf在使用时出现的问题小汇总

文章开头放一下IBM的google protocol buffer的介绍链接.http://www.ibm.com/developerworks/cn/linux/l-cn-gpb/ 对于这种技术不断更新的东西,我只能这么理解:因为技术在更新,版本在变化,之前很详尽的技术博文可能在之后的版本中遇到无法预知的问题,所以我们在使用时要注意甄别.废话不多说,进入正文部分. 安装什么的都是小问题了,还是贴一下步骤吧. tar -xzf protobuf-2.5.0.tar.gz cd protobuf-

EntityFrameWork 使用时碰到的小问题

EntityFrameWork 使用时碰到的小问题 1,在使用orm访问数据库的相目里,也要引用EntityFrameWork.dll,否则无法使用orm 否则,编译错误 错误 5 "System.Data.Entity.DbSet`1<DbAccess.Entity.Dept>"不包含"Where"的定义,并且找不到可接受类型为"System.Data.Entity.DbSet`1<DbAccess.Entity.Dept>&qu

Highcharts使用时遇到的问题及解决方案

Highcharts使用时遇到的问题及解决方案 Highcharts图表控件功能强大,对细节处理得很细致,是目前使用最为广泛的图表控件.本文总结了作者在使用Highcharts时遇到的问题及解决方案. 1. 图表颜色设置 图表的边框色,背景色及点.线的颜色都是可以设置的,其中边框色(borderColor).背景色(backgroundColor)在chart中设置: chart: { backgroundColor: 'pink',// 背景色 borderColor: 'red',// 边框

bootstrap使用时 细节心得

最近国庆7天 还原某丽说 APP PC端网页(作业)时  全程使用bootstrap制作 也遇到了以前很少碰到过的问题 bootstrap 本身修改了某些默认样式  即使在 未给标签class命名某个bootstrap模板时  某些标签也被修改过  这样会容易使某些像我一样的新手误以为自己写的代码哪里出了问题  而浪费很多时间去找一个 没有错误的错误  所以在这里给各位同学做个温馨提示 例如 fieldset 中 lengd标签中的文字 应该是水平居中 位于两侧横线中间 并且垂直居中于横线 但在

c语言:宏里面参数不加括号容易出错,在使用时尽量加括号及举例

宏里面参数不加括号容易出错,在使用时尽量加括号 程序1: #include<stdio.h> #define SQARE(X) X*X int main() { int  n = 10; int m=SQARE(n); printf("m=%d\n",m); return 0; } 结果: m=100 请按任意键继续. . . 分析:貌似没有出问题,请看下面两个例子 程序2: #include<stdio.h> #define SQARE(X) X*X int