【问题标题】:UITableView scroll content size incorrect after dismissing another view关闭另一个视图后 UITableView 滚动内容大小不正确
【发布时间】:2013-04-04 13:46:10
【问题描述】:

所以我有一个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 设置正确,我可以再次滚动。

【问题讨论】:

  • 刚刚遇到这个,viewDidAppear 是不是打错字了——你没有正确复制代码吗?

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


【解决方案1】:

添加一个

[table setNeedsDisplay]; 

另外,您不制作动画是否有特殊原因?

【讨论】:

  • 似乎不起作用。我也按照同样的思路尝试了 setNeedsLayout。
  • 加回动画怎么样?
  • 在我的真实代码中实际上是动画的,我这里只是弄错了。我需要动画。
  • 在为表格中的滚动视图计算 contentSize 时,这是与时间相关的问题吗?
  • 我遇到了同样的问题,我有一个动画块,我在其中设置了表 setNeedsDisplay 但没有任何反应。你怎么修好它的。 stackoverflow.com/questions/18369449/…
【解决方案2】:

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

【讨论】:

    【解决方案3】:

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

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

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2019-11-23
      • 1970-01-01
      相关资源
      最近更新 更多