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

来源:互联网 发布:万能网络监控客户端 编辑:程序博客网 时间:2024/05/22 02:28

一、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
定义为哪个类,就能在哪个类中进行连线, 而要在loadNibowner传入相应的对象即可调用相应方法。(必须保持一致,否则调用方法时会出现找不到方法)


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


1 0