UITableView numberOfRowsInSection 被多次调用
Posted
技术标签:
【中文标题】UITableView numberOfRowsInSection 被多次调用【英文标题】:UITableView numberOfRowsInSection called multiple times 【发布时间】:2011-03-08 09:26:23 【问题描述】:填充表格视图时应该调用tableView:numberOfRowsInSection
方法多少次?
我的应用程序崩溃了,没有任何警告、错误或堆栈跟踪。我还测试了内存泄漏,但没有发现。该应用保持稳定在 1.4MB 左右。
我有 NSLog 报告,因为方法被发送了消息,我注意到 tableView:numberOfRowsInSection
被多次调用。该应用程序在这些“额外”调用之一期间崩溃。应用程序崩溃的时间点各不相同。我应该指出,该表填充了大约 600 个单元格,如果这有所不同的话。
如果您愿意,我可以发布代码,但我的数据源来自singleton class
,所以代码很多。任何帮助将不胜感激。
【问题讨论】:
你能把代码贴出来吗? 【参考方案1】:在另一个类似问题中查看我的答案:link
基本上,对表视图的委托方法的调用可以由不同的事件触发。 UITableView 多次调用numberOfRowsInSection
对我来说并不奇怪(即使是同一部分)。
【讨论】:
【参考方案2】:我遇到了同样的问题,第一次 tableview 实例不是 nil 并且随后的时间是 nil。问题是,我还没有为
设置返回值- (CGFloat)tableView:(UITableView *)tableView heightForRowAtIndexPath:(NSIndexPath *)indexPath
因此它一直在发生。一旦我设置了返回值,问题就消失了。希望这对某人有所帮助。
【讨论】:
【参考方案3】:最好的方法是使用 Lazy table image loading 。所以 600 个单元格是一个很大的数量,如果你一次调用所有数据,它总是会由于内存问题而崩溃。
尝试使用我提供的代码。
*** 上的另一个答案可以帮助您。
【讨论】:
我不加载图像,只是加载文本。 Lazy Table 图像加载方法是否也适用于此? 它应该适合你。与惰性表格图像一样,您可以加载许多图像以及文本......所以尝试在惰性表格图像代码中更改一些内容,根据您的需要进行制作......您一定会得到答案.. 是否支持一定数量的单元格?我通过 JSON 字符串加载此信息,因此我在一次调用中获得了所有 600 多个数据单元。我应该一次只显示 50 个并带有更多选项吗?如果用户最终加载所有 600 个,这会是一个问题吗?还是我应该使用某种分页技术? 那会是一个更好的选择,你可以在 50 data 的末尾放一个按钮,按下显示更多,它应该可以解决你的问题。 我很困惑,因为 UITable 渲染的工作方式,它只渲染足够的单元格来填满屏幕。其余的在滚动期间渲染。那么如果我有 50 个细胞或 1000 个细胞,这有什么区别呢?以上是关于UITableView numberOfRowsInSection 被多次调用的主要内容,如果未能解决你的问题,请参考以下文章
UItableview 单元格的动态高度与 UItableview 单元格内的 UItableview