我有一个带有 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 从一个故事板重用到另一个故事板。
cellForRowAtIndexPath关于为什么从 nib 文件加载与从情节提要加载时UITableViewCell 的大小不正确的任何猜测或想法?