zoukankan      html  css  js  c++  java
  • 【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中的监听button点击事件, 点击后使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.理论篇
    作为首席架构师,我是如何选择并落地架构方案的?
    asp.net MVC 应用程序的生命周期
    微服务架构优缺点
    一位同事对 Rafy 框架的一些建议及我的回复
    .NET 版本区别,以及与 Windows 的关系
    MIS性能优化常见问题与方案(辅助项目组性能优化的总结贴)
    何时使用静态 API
    2011奥斯卡最佳纪录片《监守自盗(Inside Job)》小结
    Rafy 框架
  • 原文地址:https://www.cnblogs.com/mengfanrong/p/4343877.html
Copyright © 2011-2022 走看看