ios UITableView 重新加载数据不会增加内容高度



我在iOS应用程序中遇到了一个奇怪的错误,一直无法找出原因。

在我的UITableView中,我可以添加新的单元格,所以我刷新作为数据源的数组并调用reloadData

一切顺利。numberOfRowsInSection再次被调用,它的值比以前的值多了一个。新单元格甚至被插入到表视图的底部,但我无法向下滚动到它。我只知道它在那里,因为表视图会反弹,我可以看到它。

我猜由于某种原因,表视图的内容高度没有增加,但我不知道为什么。

我正在使用iOS 6 btw.

非常感谢您的帮助!谢谢,

左利

编辑,Srikanth问题的答案:

  1. 如何添加数据

有一个NSArray包含特定类型的对象。array.count是单元格的数目。此NSArray从数据库查询中获取其值。

  1. 当你说你在刷新数组时,你的意思是什么

刷新数组意味着我在数据库中执行一个新查询,并将该查询的结果放入NSArray中。这将是tableview的数据源数组。像这样:

dataSourceArray = [dbManager executeQuery];
[tableView reloadData];
  1. 是否在同一视图控制器中添加数据

是。

  1. 你能展示一些你正在做什么的代码吗

见上文。

  1. 表视图是在视图控制器视图的根目录下还是在另一个视图中

tableview是主视图的第一个子视图。

  1. 您可以尝试在数组的开头添加数据吗?这样您就可以查看在顶部添加的单元格

我不明白你的意思。

检查表View:heightForRowAtIndexPath:方法。此方法可能以某种方式为新添加的行返回零。

答案是确保在调用表视图的reloaddata之前,我从数据库中获取了新内容。由于某些原因,新内容在tableview中,但其内容高度较小。我的猜测是,numberOfRowsInSection是在新结果出现在数组中之前调用的,但其内容来自带有新数据的数组。但这也没有道理。。。

但是,通过回调确保只有在fetch查询完成后才能重新加载表视图,这就解决了问题。

我遇到了同样的问题,唯一能让它正常运行的方法不是使用reloadData,而是重新加载所有部分(归根结底是一样的,但显然不是在内部UITableView内容大小重新计算时)。

无论如何,当你的模型被加载时,不要做[self.myTableView reloadData],而是调用这个:

-(void)reloadDataWithAnimation {
[self.myTableView reloadSections:[NSIndexSet indexSetWithIndexesInRange:NSMakeRange(0, self.myTableView.numberOfSections)] withRowAnimation:UITableViewRowAnimationTop];
}

动画是不必要的,我只是需要它看起来那样。

最新更新