我的iOS应用中遇到了一个奇怪的错误,并且无法弄清楚原因。
在我的UITableView中,我可以添加新的单元格,因此我刷新了作为数据源的数组并调用reloadData
。
一切正常,没有错误。再次调用numberOfRowsInSection
,它的值比之前的值多一个。新单元格甚至插入到tableview的底部,但我无法向下滚动到它。我只知道它在那里,因为tableview反弹,我可以看到它。
我猜测tableview的内容高度由于某种原因没有增加,但我不明白为什么。
我正在使用iOS 6顺便说一句。
非常感谢任何帮助! 谢谢,
佐利
编辑,回答Srikanth的问题:
有一个NSArray包含特定类型的对象。 array.count是单元格数。此NSArray从数据库查询中获取其值。
通过刷新数组,我的意思是我在数据库中执行一个新查询,并将此查询的结果放入NSArray中。这将是tableview的数据源数组。像这样:
dataSourceArray = [dbManager executeQuery];
[tableView reloadData];
是
见上文。
tableview是主视图的第一个孩子。
我不明白你的意思。
答案 0 :(得分:0)
检查你的tableView:heightForRowAtIndexPath:方法。对于新添加的行,此方法可能以某种方式返回零。
答案 1 :(得分:0)
答案是确保在调用tableview的reloaddata之前从数据库中获取新内容。出于某种原因,新内容位于tableview中,但其内容高度较小。我的猜测是在新结果出现在数组之前调用numberOfRowsInSection,但其内容来自带有新数据的数组。但这也没有意义......
但确保使用回调重新加载tableview只是在获取查询完成后解决了问题。
答案 2 :(得分:0)
我遇到了同样的问题,我能够使其表现正常的唯一方法就是不使用reloadData,而是重新加载所有部分(归结为同样的事情,但显然不是在内部UITableView contentSize重新计算)。
无论如何,当你的模型被加载时,不要做[self.myTableView reloadData],而是调用它:
-(void)reloadDataWithAnimation {
[self.myTableView reloadSections:[NSIndexSet indexSetWithIndexesInRange:NSMakeRange(0, self.myTableView.numberOfSections)] withRowAnimation:UITableViewRowAnimationTop];
}
动画不是必需的,我只是需要它看起来那样。