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. android之Chronometer

    首先定义activity_main.xml文件 代码如下: <LinearLayout xmlns:android="http://schemas.android.com/apk/re ...

  2. 以下是关于Controller的一些Hint

    在经过路由分发之后,实际的应用Controller接管用户的所有请求,并负责与用户数据的交互.CI中所有的应用控制器都应该是CI_Controller的子类(除非你扩展了CI的核心,那么你的Contr ...

  3. PHP中有关Session的函数比较多,最常用到的也就这么几个函数

    php中的cookie与session技术详解 一.cookie介绍 cookie常用于识别用户.cookie是服务器留在用户计算机中的小文件.每当相同的计算机通过浏览器请求页面时,它同时会发送coo ...

  4. git 远程仓库ssh方式

    用ssh-keygen生成公匙和私钥 d:\c\learnc>ssh-keygen Generating public/private rsa key pair. Enter file in w ...

  5. Apache Spark源码走读之20 -- ShuffleMapTask计算结果的保存与读取

    欢迎转载,转载请注明出处,徽沪一郎. 概要 ShuffleMapTask的计算结果保存在哪,随后Stage中的task又是如何知道从哪里去读取的呢,这个过程一直让我困惑不已. 用比较通俗一点的说法来解 ...

  6. MyBatis传入参数为集合 list 数组 map写法

    foreach的主要用在构建in条件中,它可以在SQL语句中进行迭代一个集合.foreach元素的属性主要有item,index,collection,open,separator,close.ite ...

  7. Oracle数据库常用命令

    导出表数据 exp user/pwd@dbname file=filename.dmp tables=tbl_name rows=y indexes=n triggers=n grants=n 导入表 ...

  8. Oracle数据库--SQL函数

    Oracle SQL函数  1.ASCII返回与指定的字符对应的十进制数;SQL> select ascii('A') A,ascii('a') a,ascii('0') zero,ascii( ...

  9. flink - 反压

    http://wuchong.me/blog/2016/04/26/flink-internals-how-to-handle-backpressure/ https://ci.apache.org/ ...

  10. [转载]推荐不伤眼睛的文字背景色 VS背景色

    天天使用电脑要主要保护眼睛.下面介绍下不伤眼睛的文字背景色 苹果绿 RGB 204,255,204 #CCFFCC 杏仁黄 rgb 250 249 222 #FAF9DE 青草绿 rgb 227 23 ...