zoukankan      html  css  js  c++  java
  • Xib的使用与File'Owner总结

    Xib的使用与File'Owner总结

    一、XIB的适用范围

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

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

    二、XIB的使用

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

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

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

    三、关于loadNibNamed方法

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

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



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

    4.关于File’s Owner

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

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

    注意:
    Xib文件的File’Owner不限于ViewController类,可以是任何类. Class定义为哪个类, 就能在哪个类中进行连线, 而要在loadNib时owner传入相应的对象(self对象)即可调用相应方法。(必须保持一致,否则调用方法时会出现找不到方法)。
     
    另外:
    也可以对Xib中某个UI控件单独设置Class,以后该控件及其子控件就需要在设置的Class中拖线引用。此时Xib功能类似Storyboard,针对已指定Class的Xib内的UI控件,千万不能再向Xib 的File's Owner拖线了,否则必定报错。
     


    转载出处:http://blog.csdn.net/xn4545945 
     
    iOS开发者交流群:180080550
  • 相关阅读:
    MVC之Servlet控制器(二)
    MVC之Servlet控制器(一)
    基于Java实现批量下载网络图片
    @ModelAttribute运用详解
    MyBatis
    理解RESTful架构
    并行计算结课论文边写边总结2
    并行计算结课论文边写边总结(1)
    CUDA笔记(六)
    ubuntu12.04
  • 原文地址:https://www.cnblogs.com/stevenwuzheng/p/5386726.html
Copyright © 2011-2022 走看看