一、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