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

一、XIB的适用范围

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适用例子:

//
//  XNViewController.m
//  09xib的使用, 只是简单的加载xib, 没有设置filesowner不能进行连线.
//
//  Created by neng on 14-6-5.
//  Copyright (c) 2014年 neng. All rights reserved.
//
 
#import "XNViewController.h"
 
@interface XNViewController ()
{
    BOOL _sign;//测试玩
}
@end
 
@implementation XNViewController
 
- (void)viewDidLoad
{
    [super viewDidLoad];
    
    _sign = NO;
    [self myLoadXib];
}
 
/**加载xib*/
-(void)myLoadXib
{
    //1.加载xib
    NSArray *views =  [[NSBundle mainBundle] loadNibNamed:@"MyXIB" owner:nil options:nil];
    //2.取出xib中的view并添加到父视图
    UIView *myView = views[0];
    UIButton *btn1 = (UIButton *)[myView viewWithTag:1];
    UIButton *btn2 = (UIButton *)[myView viewWithTag:4];
    
    [btn1 addTarget:self action:@selector(myClick) forControlEvents:UIControlEventTouchUpInside];
    [btn2 addTarget:self action:@selector(myClick) forControlEvents:UIControlEventTouchUpInside];
    
    [self.view addSubview:myView];
    
    //NSLog(@"%d",views.count);  //返回的数组是视图的个数(不包括子视图)
    
    //另取一个.(数组中的顺序是根据xib文件中的的顺序来的)
    UIButton *btn = views[1];
    btn.frame = CGRectMake(0, 333, btn.frame.size.width, btn.frame.size.height);
    [btn addTarget:self action:@selector(myClick) forControlEvents:UIControlEventTouchUpInside];
    [self.view  addSubview:btn];
}
 
/**xib中的监听按钮点击事件, 点击后使storyboard中label文字改变*/
-(void)myClick
{
    _sign = !_sign;
    if (_sign) {
        _myLabel.text = @"Hello!";
    }else{
        _myLabel.text = @"World!";
    }
}
 
@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 传入相应的 对象 即可调用相应方法。(必须保持一致,否则调用方法时会出现找不到方法)



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

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值