欢迎访问 生活随笔!

生活随笔

当前位置: 首页 > 编程资源 > 编程问答 >内容正文

编程问答

iOS tableview的常用delegate和dataSource执行顺序

发布时间:2025/6/17 编程问答 55 豆豆
生活随笔 收集整理的这篇文章主要介绍了 iOS tableview的常用delegate和dataSource执行顺序 小编觉得挺不错的,现在分享给大家,帮大家做个参考.

在这次项目中遇到了一个特别奇葩的问题:表视图创建的cell在7以上的系统能正常运行显示,在模拟器上就不能正常实现......为解决这个问题,纠结了好久......

对在7系统上不显示的猜测:

用masory设置约束不对,导致cell不显示;

对这个猜测也弄了好久,对一个个控件的约束都好好检查了一遍,发现实在是没有错的...后来迫不得已,自己不用masory,直接用frame约束,发现还是不显示,这才对masory的问题放弃了....

最后考虑了下:他不是内容不显示,他是直接这些cell不显示,有没有可能是cell的高度问题,通过打断点,调试,发现确实是cell的高度问题,导致cell的不显示,知道问题的原因就好办了:

因为我的cell的高度动态的,我是在cell赋值的时候根据文字的多少计算label的高度,把每个cell的高度存到model里,控制器直接返回cell的高度即可.发现在cell的高度的方法里,cell的高度直接都返回为0了,导致cell的不显示了.

这时候想到了iOS tableview的常用delegate和dataSource执行顺序:

常用的也就是下面几个方法了:

 

1 #pragma mark - Table view data source 2 - (NSInteger)numberOfSectionsInTableView:(UITableView *)tableView; 3 先看有几个section 默认1个 4 5 #pragma mark - Table view delegate 6 - (CGFloat)tableView:(UITableView *)tableView heightForHeaderInSection:(NSInteger)section; 7 标题头的高度 8 9 #pragma mark - Table view data source 10 - (NSInteger)tableView:(UITableView *)tableView numberOfRowsInSection:(NSInteger)section; 11 *******每个section中有多少行cell 12 13 #pragma mark - Table view delegate 14 - (CGFloat)tableView:(UITableView *)tableView heightForRowAtIndexPath:(NSIndexPath *)indexPath; 15 ********每个cell的行高 16 17 #pragma mark - Table view data source 18 - (UITableViewCell *)tableView:(UITableView *)tableView cellForRowAtIndexPath:(NSIndexPath *)indexPath; 19 *********初始化每个cell的内容 20 21 #pragma mark - Table view delegate 22 - (UIView *)tableView:(UITableView *)tableView viewForHeaderInSection:(NSInteger)section;

 

创建表视图的时候会先调用cell的高度的方法,再创建cell,一开始高度为0,cell当然不显示啦......

所以,比较傻一点的方法就是在请求到数据的时候计算cell中可变的label的高度,存到model中即可,这样也是最保险的方法.

虽然...功能实现了..可我还是纠结的问题没有解决:

为什么在模拟器和7以上的系统上可以正常运行,在7的系统就不行呢????要说高度都为0啊....

有知道的朋友可以回复我哟....我们共同进步,加油!!!

转载于:https://www.cnblogs.com/pengsi/p/5673385.html

总结

以上是生活随笔为你收集整理的iOS tableview的常用delegate和dataSource执行顺序的全部内容,希望文章能够帮你解决所遇到的问题。

如果觉得生活随笔网站内容还不错,欢迎将生活随笔推荐给好友。