【发布时间】:2015-01-17 19:34:07
【问题描述】:
示例项目: http://cl.ly/1o2K2m2r262q
我有一个 UITableView 自定义单元格,它们的高度是从自动布局中自动计算出来的。自定义单元格中有三个标签,每个标签与内容视图之间有垂直间距,并从左侧推开。
当我输入数据并加载时效果很好。
但是,当我从托管表格视图的视图控制器模态显示视图控制器时,我注意到它完全破坏了自动布局,因为我返回到原始视图控制器。
这是什么原因造成的?我将数据填充到一个简单的数组中,该数组充当表视图数据源的模型,然后它就是自动布局。这是一个如此简单的项目,我很困惑它会在哪里搞砸。
补充:我很欣赏 rdelmar 的回答,但我简直不敢相信现在没有一个单个应用程序可以利用 iOS 的这种动态单元格功能8 不会产生非常跳跃的表格视图。这将非常引人注目。一定有人想出了一种方法来完成这项工作,否则他们永远不会发货。
【问题讨论】:
-
进行故事板建议的更改以消除红色警告箭头,然后在
viewWillDisappear中添加self.tableView.estimatedRowHeight = 166.0。 -
@gabbler 他们并不总是那么高。它似乎仍然跳回错误的滚动位置。
-
@DougSmith,是的,它很跳跃,
tableView的contentsize在滚动时会发生变化。当你回来时,contentsize和`contentOffset` 将在viewWillAppear和viewDidAppear调用之间变化。我认为您可以手动计算单元格高度来解决此问题。我做了一个测试,以保存通过使用viewWillDisappear中的NSUserDefault自行调整单元格计算的所有单元格高度,当我回来时,我使用从NSUserDefault检索到的单元格高度,并且跳跃行为消失了。
标签: ios uitableview uiview autolayout nslayoutconstraint