Coin163

首页 > 【iOS】Xib的使用与File'Owner总结

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

相关标签: file ios

2020腾讯云双十一活动,全年最低!!!(领取3500元代金券),
地址https://cloud.tencent.com/act/cps/redirect?redirect=1073

2020阿里云最低价产品入口,含代金券(新老用户有优惠),
入口地址https://www.aliyun.com/minisite/goods

相关推荐:IOS总结_#define宏定义在IOS开发中的具体使用

记录一下: http://blog.csdn.net/yxiaoping/article/details/38847501utm_source=tuicool&utm_medium=referral

一、XIB的适用范围

相关推荐:iOS 崩溃调试的使用和技巧总结

在iOS开发调试过程中以及上线之后,程序经常会出现崩溃的问题。简单的崩溃还好说,复杂的崩溃就需要我们通过解析Crash文件来分析了,解析Crash文件在iOS开发中是比较常见的。 现在网上有很多关于解析崩溃信息的博客,但是大多质量参差不齐,或者有些细节没有

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

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

二、XIB的使用

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

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

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

三、关于loadNibNameed方法

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

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

owner:指定相应的File's Owner



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

4.关于File’s Owner

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

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

File’Owner 不限于 viewController, 可以是任何类 .
Class 定义为哪个类 , 就能在哪个类中进行连线 ,  而要在 loadNib 时 owner 传入相应的 对象 即可调用相应方法。(必须保持一致,否则调用方法时会出现找不到方法)

原文

一、XIB的适用范围 xib(也叫Nib)与storyboard一样是用来描述界面的。 storyboard描述的是比较大型的,大范围.适合描述界面跳转等 . 二、XIB的使用 Xib 是小范围的的 , 是轻量级的 . 比较适合描述

------分隔线----------------------------