基础控件总结(一)

instancetype:

以前看很多代码万能返回值类型是id类型
但是id类型表示的返回值类型不会被解释
换句话说,我存储的对象类型如果用id,在controller接收的时候用NSString接收也是不会报错的,只有在编译过后崩溃了才会给提示。

but,现在apple给我们提供了一个新的关键词:instancetype

instancetype在类型表示上,跟id是一样的,可以表示任何对象类型
而且它只能用在返回值类型上,不能像id一样用在参数类型上
注意,它只能用在返回值类型上,用在模型的返回值上感觉还是不错的,因为它会检测instancetype的真实类型


xib和storyboard的对比

共同点:

1、都是用来描述软件界面的
2、都是用Interface Builder工具来编辑
3、他俩的实质都是转换成代码去创建控件,当然,像咱们这种新手知道原理和如何使用就行了,建议过段时间再自己用代码定义,现在直接用代码自定义View容易出错

不同点:

1、Xib是轻量级选手,用来描述局部的UI界面,类似于Android中用xml描述的item布局

2、Storyboard是重量级选手,用来描述整个软件的主布局,并且能展示多个界面之间的跳转关系

加载Xib文件的两种方式

1、首先,你在程序里能看到的资源,实际上都是在MainBundle里面,所以,你得首先创建一个NSBundle对象,然后去调loadNibName方法,输入字符串,这个说一个诀窍啊,两个凡是:凡是要Name的,直接给他名字就行了,凡是File的一律是全路径。

加载xib文件
1、NSBundle

NSArray* array =  [[NSBundle mainBundle]loadNibNamed:@"Test" owner:nil options:nil];

//添加控件第几个添加的就取第几个
[self.view addSubview:array[0]];

这时候,我们进去看一下他的返回值,发现是数组,就说明我们在xib文件里创建的这些控件都是放在数组里面的,那么我们直接用NSArray接收,然后在按顺序取出来用就好了

2、UINib,一个UINib对象就代表一个xib文件
//这里说明一下,下面的bundle参数可以直接传nil,系统会默认为以下写法,但是千万不要傻逼到把要创建的mainBundle也穿了nil,例如上面那个方法就不行,不信你试试

UINib * nib = [UINib nibWithNibName:@"Test" bundle:[NSBundle mainBundle]];

NSArray* array = [nib instantiateWithOwner:nil options:nil];
[self.view addSubview:array[0]];
  • 2
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值