【发布时间】:2020-04-18 09:25:14
【问题描述】:
我有一个带有 UITableView 的 UIViewController,每个 UITableViewCell 里面都有一个 UICollectionView。视图控制器是从一个基本的简单 nib 文件(其中包含一个 UITableView 的 UIView)加载的,而自定义 UITableViewCell 是从一个单独的 nib 文件加载的。 UICollectionView 和 UITableViewCell 都必须动态调整大小。它可以工作,但是当最初加载 tableview 及其单元格时,在调用 cellForRowAtIndexPath 时它们似乎没有正确的帧大小,这导致 collectionView 的大小不准确,因此 UITableViewCell 的高度为不符合它的内容。在cellForRowAtIndexPath 内部,它似乎采用了在 nib 文件中显示的 tableview 的框架,而不是该设备上 tableView 的正确大小。如果我调用[tableView reloadData]或上下滚动,单元格的框架是正确的,因此collectionView的高度和tableViewCell的高度都是正确的。
有趣的是如果我更改设置以便从情节提要加载 UIViewController,然后将相同的单元格作为原型单元格嵌入情节提要的 UITableView ... 现在一切正常,并且UITableViewCell 现在在第一次通过时正确加载单元格的框架,因此我不需要调用[tableView reloadData] 来使其正确调整每个单元格的大小。
我不确定为什么它的行为有所不同。理想情况下,我会使用 nib 解决方案,因为我想在不同的地方重用相同的单元格,并且没有办法将 UITableViewCell 从一个故事板重用到另一个故事板。
对于从 nib 文件加载时与从情节提要加载时 UITableViewCell 为何在 cellForRowAtIndexPath 中未正确调整大小的任何猜测或想法?
【问题讨论】:
标签: ios uitableview uicollectionview uistoryboard