XIB的唤醒

XIB的两种加载方式

方式一:NSArray*views = [[NSBundle mainBundle] loadNibNamed:@"Empty" owner:nil options:nil];

方式二:

UINib *nib = [UINib nibWithNibName:@"Empty" bundle:nil];

UIView *view = [[nib instantiateWithOwner:nil options:nil] lastObject];

我们在使用的时候,可以在view的.m文件里写类方法或者写对象方法来使用上述的家在方法来使用xib.

如果想在定义好的xib上添加视图,要重写 initWithCoder方法(此方法添加的xib的子控件)。但是此方法添加的视图是在xib还未被唤醒的时候添加的xib已经创建,但未唤醒,依然没展示在视图上。所以要重写唤醒xib的方法(来添加xib中创建的子控件的子控件),- (void)awakeFromNib;


如果一个view从xib中加载,就不能用alloc init 和initWithFrame来创建

如果一个xib经常被使用,应该提供快速构造的类方法

如果一个view是从xib中加载,想要在view上用代码添加一些子控件,要用initWithCoder和awakeFromNib来创建


XIB的加载原理

- (UIView)loadFromNib ->

xib的xml代码->

initWithCode转化xml的代码(拿到需要的view和属性)->

唤醒->展示到视图上

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容

  • 首先声明,我这是根据别人的讲解来写出来的,,, 一、关于xib 1.xib和nib 在程序里面我们看到的基本上是U...
    湮灭_尘事阅读 8,943评论 1 14
  • 1.自定义控件 a.继承某个控件 b.重写initWithFrame方法可以设置一些它的属性 c.在layouts...
    圍繞的城阅读 8,904评论 2 4
  • 很多朋友如果是初学iOS开发,可能会被其中的几个加载方法给搞得晕头转向的,但是这几个方法又是作为iOS程序员必须要...
    Jackie_123阅读 8,721评论 4 18
  • 最近这几天老是睡不好,浅睡眠的状态下一晚上就感觉自己根本没睡,既然睡不好所以我就干脆晚上不睡,早上早起了,每...
    麦芽么么阅读 3,471评论 0 0
  • 方法是:两天晒网,三天打渔。 你没有看错, 的确是反过来就好了。 **一、晒网无可避免 **极少有人能做到盯住一件...
    空气边缘阅读 4,421评论 1 2