半路出家, 我的iOS自学之路-6-通过xib自定义UITableViewCell

1 篇文章 0 订阅
1 篇文章 0 订阅

这里我将高度总结关于xib(nib)自定义table和cell里面的一些细节, 这些细节你在其他地方不会有人跟你讲(觉得太简单了), 但是对于自学IOS的人而言又特别重要的"坑".

 

1. 为什么xib里的cell无法在table中实现重用?

2. 什么是File's Owner?

 

我下面将言简意赅的快速回答这2个问题.

 

问题1: 为什么xib里的cell无法在table中实现重用?

[这是文件列表]

 

[这是重用cell的代码]

[在xib中设置cell对象的重用标识符]

按照以上步骤就可以了, 至于其他说法, 比如"xib中有多个对象, 所以无法重用cell", 都是错误言论, 因为跟你在一个xib文件中是否包含了多个对象无关.

内心戏: 网上找过很多讲xib创建cell的文章, 几乎没有一个讲过这个细节, 不知道是我看漏了, 还是别人都觉得太esay了, 不屑于讲, 或许我是第一个在网上讲这么简单的东西的人, 想想还有点小激动, 23333

 

问题2: 什么是File's Owner?

很多人第一次用xib都不理解File's Owner到底是个啥玩意, 甚至还花时间去研究owner的含义, 简直用力用错了方向, 我这里简单解释一下 owner 是什么, owner 就是 owner, 就跟你不会问 苹果 是什么, 因为 苹果 就是 苹果, 我拿一个苹果给你看, 然后告诉你, 这就是 苹果, 你记住了就行了, 以后别人说苹果, 你就立马知道什么是苹果. owner 也是这样, owner 就是 owner, 你对owner没概念, 那是因为你从来没用过owner , 你用过 owner , 然后记住这就是owner 就行了.

 

下面演示owner的用法, 这里通过用 "UINib对象初始化一个UITableView实例" 来举例owner怎么用!

 

[文件列表]

[给File's Owner的Class属性设置为你指定的类TableViewOwner]

[因为TableViewOwner实现了两个"协议" UITableViewDataSource 和 UITableViewDelegate, 那么就可以通过连线, 把xib中的Table View的delegate和dataSource设置为File's Owner了]

[最后在代码中用xib初始化tableView实例, 并传入owner]

1. 这里需要解释一下, 方法"loadNibNamed:owner:options"中的"owner", 这里是弱引用(weak), 也就是说, 你传入的owner对象必须是在外部一直存在的, 这也就是为什么我把 TableOwner 对象设置为静态变量, 如果用局部变量, owner对象传进去, 但是方法结束, owner对象就被销毁了, 那么tableView还上哪去找它的File's Owner呢, 于是程序就会闪退.

2. 销毁tableView的时候, 要顺手把它的 owner = nil;

 

最后把TableOwner的代码贴出来

[故意在创建cell的时候初始化赋值, 就是为了看是否实现重用! 正确开发中应该在 if(cell==nil) {block...} ... 后面赋值, 而不是在"block..."的位置进行初始化赋值.]

好了, 扫盲到此结束, 只给干货, 不扯犊子.

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值