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. VFS

    VFS的作用:为文件系统提供通用的接口. 通用文件模型:common file model.特殊文件系统需要将它的物理结构转换成通用文件模型. common file model包括以下几个重要对象: ...

  2. hdu 1116 并查集和欧拉路径

    ---恢复内容开始--- 把它看成是一个图 只是需要欧拉路径就可以了 首尾能连成一条线即可 如果要判断这个图是否连通 得用并查集 在hrbust oj里面看答案学到的方法 不用各种for循环套着判断能 ...

  3. Frenetic Python实验(三)

    实验5 repeater 这个实验在HelloSDNWorld里面做的实验是一样的.HelloSDNWorld 目的:模拟一个有多个端口的中继器. This application implement ...

  4. 19. 求平方根序列前N项和

    求平方根序列前N项和 #include <stdio.h> #include <math.h> int main() { int i, n; double item, sum; ...

  5. PHP 错误与异常 笔记与总结(9)自定义错误处理器

    自定义错误处理器更加智能. <?php class myErrorHandler{ //$message:错误信息 //$filename:错误文件名 //$line:错误行号 //$vars: ...

  6. SQL搜索下划线,like中不能匹配下划线的问题

    最近在检测天气预报15天查询网 站(http://tqybw.net)时的URL时,发现页面中有很些404页,分析发现,是请求地址的能参数中多了下划线“_”,而rewrite规 则中并没有配这样的规则 ...

  7. Java反射机制深入研究

    ava 反射是Java语言的一个很重要的特征,它使得Java具体了“动态性”.   在Java运行时环境中,对于任意一个类,能否知道这个类有哪些属性和方法?对于任意一个对象,能否调用它的任意一个方法? ...

  8. svn解锁

    SVN解锁操作 现在很多项目开发都使用SVN作为馆控工具,SVN馆中的文件既可以以文件夹的方式获取,也可以通过eclipse导入.获取文件后,我们可以对某个文件锁定. 如果某个同事锁定了某个文件,而他 ...

  9. IOS常见的三种回调方法介绍

    认识下三种IOS常见的回调模式. 代理模式作为IOS中最常见的通讯模式,代理几乎无处不在. 这里有一个数组,我们首先通过代理的方式将数组传递到其他方法中去. 设置协议及方法 @protocol Cal ...

  10. lua环境安装 转

    curl -R -O http://www.lua.org/ftp/lua-5.2.2.tar.gz tar zxf lua-5.2.2.tar.gz cd lua-5.2.2 make linux ...