• 加载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的哪个方法中操作

  • 相关阅读:
    ajax提交Form
    MySQL新建用户,授权,删除用户,修改密码总结
    php 数组操作类(整合 给意见)
    PHP基于数组的分页函数(核心函数array_slice())
    php生成table表格
    百度地图定位
    python-redis-订阅和发布
    宿主机-免密登录Docker容器
    docker-文件系统出错处理
    python-redis集合模式
  • 原文地址:https://www.cnblogs.com/jingdizhiwa/p/5614541.html
Copyright © 2020-2023  润新知