Xib的使用与File'Owner总结

一、XIB的适用范围

xib(也叫Nib)与storyboard一样是用来描述界面的。

storyboard描述的是比较大型的,大范围.适合描述界面跳转等.

二、XIB的使用

Xib是小范围的的,是轻量级的.比较适合描述小块的界面.

创建xib:新建界面里面user interface --》empty.

加载xib:[NSBundle mainBudle]loadNibNamed:XXX….]来加载xib

三、关于loadNibNamed方法

[[NSBundle mainBundle] loadNibNamed:@"MyXIB" owner:nil options:nil];  //一般用法

返回值:返回的NSArray是根视图下的视图个数(不包括子视图),如下图:只返回2个,即View与Button。(不包括View中的子视图)

xib适用例子:

  1. //  XNViewController.m
  2. //  09xib的使用, 只是简单的加载xib, 没有设置filesowner不能进行连线.
  3. //
  4. #import "XNViewController.h"
  5. @interface XNViewController ()
  6. {
  7. BOOL _sign;//测试玩
  8. }
  9. @end
  10. @implementation XNViewController
  11. - (void)viewDidLoad
  12. {
  13. [super viewDidLoad];
  14. _sign = NO;
  15. [self myLoadXib];
  16. }
  17. /**加载xib*/
  18. -(void)myLoadXib
  19. {
  20. //1.加载xib
  21. NSArray *views =  [[NSBundle mainBundle] loadNibNamed:@"MyXIB" owner:nil options:nil];
  22. //2.取出xib中的view并添加到父视图
  23. UIView *myView = views[0];
  24. UIButton *btn1 = (UIButton *)[myView viewWithTag:1];
  25. UIButton *btn2 = (UIButton *)[myView viewWithTag:4];
  26. [btn1 addTarget:self action:@selector(myClick) forControlEvents:UIControlEventTouchUpInside];
  27. [btn2 addTarget:self action:@selector(myClick) forControlEvents:UIControlEventTouchUpInside];
  28. [self.view addSubview:myView];
  29. //NSLog(@"%d",views.count);  //返回的数组是视图的个数(不包括子视图)
  30. //另取一个.(数组中的顺序是根据xib文件中的的顺序来的)
  31. UIButton *btn = views[1];
  32. btn.frame = CGRectMake(0, 333, btn.frame.size.width, btn.frame.size.height);
  33. [btn addTarget:self action:@selector(myClick) forControlEvents:UIControlEventTouchUpInside];
  34. [self.view  addSubview:btn];
  35. }
  36. /**xib中的监听按钮点击事件, 点击后使storyboard中label文字改变*/
  37. -(void)myClick
  38. {
  39. _sign = !_sign;
  40. if (_sign) {
  41. _myLabel.text = @"Hello!";
  42. }else{
  43. _myLabel.text = @"World!";
  44. }
  45. }
  46. @end

4.关于File’s Owner

作用: 让xib也能像storyboard一样连线. (storyboard默认生成的时候,class为对应的viewController,因此能直接和代码中方法进行连线)。

做法:
(1). 将xib中的class设置为对应的xxxViewController.
(2). 并在loadNib时将owner设置为对应的xxxViewController(即一般为self, 对象)。

注意:
Xib文件的File’Owner不限于ViewController类,可以是任何类. Class定义为哪个类, 就能在哪个类中进行连线, 而要在loadNib时owner传入相应的对象(self对象)即可调用相应方法。(必须保持一致,否则调用方法时会出现找不到方法)。
 
另外:
也可以对Xib中某个UI控件单独设置Class,以后该控件及其子控件就需要在设置的Class中拖线引用。此时Xib功能类似Storyboard,针对已指定Class的Xib内的UI控件,千万不能再向Xib 的File's Owner拖线了,否则必定报错。
 

转载出处:http://blog.csdn.net/xn4545945 

 

Xib的使用与File'Owner总结的更多相关文章

  1. 【iOS】Xib的使用与File'Owner总结

    一.XIB的适用范围 xib(也叫Nib)与storyboard一样是用来描写叙述界面的. storyboard描写叙述的是比較大型的,大范围.适合描写叙述界面跳转等. 二.XIB的使用 Xib是小范 ...

  2. iOS nib file owner

    nib文件中的file owner属性,设定后app在运行时加载nib文件的过程中会通过file owner重新建立nib文件中描述的控件与其在file owner中对应的IBOutlet或IBAct ...

  3. ios中xib的使用介绍

    ios中Xib的使用 ios中xib的使用 Nib files are the quintessential(典型的) resource type used to create iOS and Mac ...

  4. IOS自定义表格UITableViewCell

    在UITableView中,自定义表格,最原始是继承UITableViewCell,然后通过写代码方式去搞,但是这个费事了. 1.在storyboard中 给一个ViewController的tabi ...

  5. 用Swift实现一款天气预报APP(一)

    这个系列的目录: 用Swift实现一款天气预报APP(一) 用Swift实现一款天气预报APP(二) 用Swift实现一款天气预报APP(三) Swift作为现在苹果极力推广的语言,发展的非常快.这个 ...

  6. iOS-cell的封装和重用

    一.通过xib描述cell---(cell的高度一致,cell里面控件布局基本一样): 1.(M) 创建模型: -------------------------------------------- ...

  7. [转]ios 开发file's owner以及outlet与连线的理解

    转载地址:http://www.cocoachina.com/bbs/simple/?t108822.html xib文件本身可以看做是一个xml,app启动的时候会根据xml构造xib对应的界面及其 ...

  8. file's owner以及outlet与连线的理解

    转自:http://www.cnblogs.com/martin1009/archive/2012/06/01/2531028.html xib文件本身可以看做是一个xml,app启动的时候会根据xm ...

  9. The File's Owner

    The File Owner is an instantiated, runtime object that owns the contents of your nib and its outlets ...

随机推荐

  1. 本函数用来改变目前 php 执行的目录到新的 directory 目录中

    chdir : 改变目录. dir : 目录类别类. closedir : 关闭目录 handle. opendir : 打开目录 handle. readdir : 读取目录 handle. rew ...

  2. SQLHelper 简介

    什么是SQLHelper SqlHelper是一个基于.NETFramework的数据库操作组件.组件中包含数据库操作方法,目前SqlHelper有很多版本,主要以微软一开始发布的SqlHelper类 ...

  3. 配置SMarty解析

    在 common/main.php中配置 View 组件 'view' => [ 'renderers' => [ 'tpl' => [ 'class' => 'yii\sma ...

  4. angular+selecte2(angular ng-repeat渲染)

    一.页面代码 <select id="sponsorId" select2 ng-model="sponsorSelectedObj" ng-change ...

  5. maven-surefire-plugin总结

    Maven通过Maven Surefire Plugin插件执行单元测试.(通过Maven Failsafe Plugin插件执行集成测试) 在pom.xml中配置JUnit,TestNG测试框架的依 ...

  6. 【翻译】西川善司的「实验做出的游戏图形」「GUILTY GEAR Xrd -SIGN-」中实现的「纯卡通动画的实时3D图形」的秘密,后篇

    http://www.4gamer.net/games/216/G021678/20140714079/     连载第2回的本回,  Arc System Works开发的格斗游戏「GUILTY G ...

  7. 使用Xpath对XML进行模糊查询

    如果要对XML文件进行模糊查找的话是一个比较麻烦的事情,Xpath表达式中没有像文件系统中的“*”或"?" 或者有像SQL表达式中的"%",这样的模糊查找的通配 ...

  8. Kafka可靠性的思考

    首先kafka的throughput 很牛逼,参考:http://engineering.linkedin.com/kafka/benchmarking-apache-kafka-2-million- ...

  9. javascrpt 继承

    一.基于原型链方式实现的继承 缺点:无法从子类中调用父类的构造函数,所以没有办法把子类的属性赋值到父类中. 如果父类中有引用类型,例如:数组.此时这个引用类型会添加到子类的原型当中,一但子类某个对象修 ...

  10. 删除下标为n的数组值

    Array.prototype.del=function(n) { //n表示第几项,从0开始算起.//prototype为对象原型,注意这里为对象增加自定义方法的方法. if(n<0) //如 ...