zoukankan      html  css  js  c++  java
  • 加载xib文件

    // Test.xib --编译--> Test.nib
        // 方式1
        NSArray *objs = [[NSBundle mainBundle] loadNibNamed:@"Test" owner:nil options:nil];
        [self.view addSubview:objs[3]];//3代表控件再Test.xib中的位置顺序
    // 方式2
        // 一个UINib对象就代表一个xib文件
    //    UINib *nib = [UINib nibWithNibName:@"Test" bundle:[NSBundle mainBundle]];
        // 一般情况下,bundle参数传nil,默认就是mainBundle
        UINib *nib = [UINib nibWithNibName:@"Test" bundle:nil];
        NSArray *objs = [nib instantiateWithOwner:nil options:nil];
        [self.view addSubview:objs[2]];//2代表控件再Test.xib中的位置顺序 
    //加载xib文件的初始化方式:
    //该初始化方式 不能访问子视图的子视图
    -(instancetype)initWithCoder:(NSCoder *)aDecoder
    {
        self=[super initWithCoder:aDecoder];
        if (self) {
            NSLog(@"~~~~@");
        }
        return self;
    }
    //最好用这种方式
    -(void)awakeFromNib
    {
        NSLog(@"~~~~!");
    }

    一个控件有2种创建方式
    通过代码创建
    初始化时一定会调用initWithFrame:方法

    通过xibstoryboard创建
    初始化时不会调用initWithFrame:方法,只会调用initWithCoder:方法
    初始化完毕后会调用awakeFromNib方法

    有时候希望在控件初始化时做一些初始化操作,比如添加子控件、设置基本属性
    这时需要根据控件的创建方式,来选择在initWithFrame:、initWithCoder:、awakeFromNib的哪个方法中操作

  • 相关阅读:
    第十章 Ingress
    第九章 Service
    第八章 资源控制器
    第一章 Xshell5评估期已过问题
    第七章 yaml格式
    第六章 资源清单
    第五章 配置私有仓库Harbor
    第四章 K8s部署安装
    36 SpringBoot 在系统配置文件中动态加载配置
    Java 集合、数组 任意个数数字相加等于一个指定的数
  • 原文地址:https://www.cnblogs.com/jingdizhiwa/p/5614541.html
Copyright © 2011-2022 走看看