UITableView底层原理

一、初始化
1.UITableView自定义cell时

若使用nib,使用 registerNib: 注册,dequeue时会调用 cell 的
-(void)awakeFromNib
不使用nib,使用 registerClass: 注册, dequeue时会调用 cell 的 - (id)initWithStyle:withReuseableCellIdentifier:

2.UICollectionView自定义cell时

若使用nib,使用registerNib:注册,dequeue时会调用 cell的
-(void)awakeFromNib
不使用nib,使用 registerClass: 注册, dequeue时会调用 cell 的
- (id)initWithFrame:
若不适使用registerClass注册,则根据自己创建cell时写的[cell alloc] init...之类来调用

2.隐藏分割线
2.1.把多余的分割线去掉【有一个分割线】

    UIView * footerView = [[UIView alloc] initWithFrame:CGRectZero];
    self.tableView.tableFooterView = footerView;

2.2.去掉最后一条分割线

  self.searchResultTableView.tableFooterView = [[UIView alloc]initWithFrame:CGRectMake(0, 0, 0, 1)];

2.3.键盘隐藏问题

  self.searchHistoryTableView.keyboardDismissMode = UIScrollViewKeyboardDismissModeOnDrag;
 self.searchResultTableView.keyboardDismissMode = UIScrollViewKeyboardDismissModeOnDrag;

三、计算高度
3.1
定义布局类layout 包含model和每个元素rect、总高度height。数据源存储是 布局类layout。

四、各种复杂cell 处理 防止各种switch
4.1枚举大法
代理 switch 0 1的编码
4.2协议大法
你不得不展示不同类型的 cell,像是图片和状态信息。为了保持代码优雅以及避免奇怪的数组索引计算,你应该将各种类型的数据存储到同一个数组中。数组是同质的,意味着你不能在同一个数组中存储不同的类型。面对这个问题首先想到的解决方案是协议。

五、评论回复功能开发
5.1一个tableivew:段头(sectionHead)+Cell+段尾(sectionTail)
推荐使用。
5.2uitableview嵌套uitableview

参考:
https://www.jianshu.com/p/feb14f4eee1c

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容

  • 1、隐藏UITableViewCell分割线 self.tableView.separatorStyle=U...
    天涯伊人阅读 2,120评论 0 0
  • 关于UITableViewCell的分割线,网上有无数的教程,,但是许多真的用起来却毫无作用。这让很多人最后只能隐...
    Ice_tree阅读 3,447评论 1 6
  • 前言 一直有个误解,认为设置UITableViewCell的分割线距离cell左边的间距比较麻烦,总是隐藏自带的分...
    LittleYuz阅读 1,861评论 0 1
  • 满行显示分割线 隐藏指定行的分割线 左右分割线两端距离 1.满行显示 2.隐藏指定行 隐藏前需先按1设置满行显示 ...
    Roy_Liang阅读 397评论 0 2
  • 即使你现在占的被别人坐了,你也可以继续占啊,不要坐在那里不动,起码也比坐第一排好吧。而且三个人都去前面,你一个...
    抬头r看a阅读 183评论 0 0