在解除另一个视图后,UITableView滚动内容大小不正确

时间:2013-04-04 13:46:10

标签: ios objective-c iphone uitableview cocoa-touch

所以我有一个UITableViewController启动另一个tableVC,它会在解散时更改原始单元格的数量。

解雇后,尽管返回正确的单元格高度(和标题高度)以及更新的行数(使滚动内容很大),滚动视图仅在滚动时反弹。查看表格滚动条的contentSize属性后,contentSize不正确,与以前相同。

最初加载原始tableVC时,我没有遇到问题。如果我有大量单元格,表格将按预期滚动。只有在解雇所提出的tableVC时才会遇到问题。我不确定的一件事是什么时候调用reloadData。我这样做:

1。在提交的tableVC中:

[[self presentingViewController] dismissViewControllerAnimated:YES completion:nil]

2。在原始表VC:

-(void)viewDidAppear    
{ 
   //tablecell number manipulated
   [table reloadData];

}

有趣的是,如果我旋转到横向并回到肖像,那么contentSize会正确设置,我可以再次滚动。

3 个答案:

答案 0 :(得分:3)

添加

[table setNeedsDisplay]; 

另外,你有没有动画的特殊原因?

答案 1 :(得分:1)

我通过显式重新加载部分而不是使用reloadData来解决这个问题。 [table reloadSections:[NSIndexSet indexSetWithIndex:0] withRowAnimation:UITableViewRowAnimationAutomatic];

答案 2 :(得分:0)

我有类似的问题。我正在更改静态tableView的行数和部分数以响应在子viewController中输入的数据,但在内容更新时,contentSize没有,导致滚动问题。

在我的情况下,iOS6中reloadData似乎存在一个错误,导致tableView无法正确计算新的大小(这在iOS7中运行良好)。我通过在行和节上调用适当的插入和删除来解决这个问题,详见此处:UITableView won't reload contentSize