【iOS】Xib的使用与File'Owner总结
一、XIB的适用范围
xib(也叫Nib)与storyboard一样是用来描述界面的。
二、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
(1). 将xib中的class设置为对应的viewController.
(2). 并在loadNib时将owner设置为对应的viewController(即一般为self, 对象)。
Class定义为哪个类,就能在哪个类中进行连线, 而要在loadNib时owner传入相应的对象即可调用相应方法。(必须保持一致,否则调用方法时会出现找不到方法)
转载请注明出处:http://blog.csdn.net/xn4545945
郑重声明:本站内容如果来自互联网及其他传播媒体,其版权均属原媒体及文章作者所有。转载目的在于传递更多信息及用于网络分享,并不代表本站赞同其观点和对其真实性负责,也不构成任何其他建议。