UITableViewCell框架从笔尖与情节提要中加载时不同

问题描述 投票:0回答:1

我有一个带有UITableView的UIViewController,每个UITableViewCell都有一个UICollectionView。视图控制器是从基本的简单笔尖文件(其中包含UITableView的UIView)加载的,而自定义UITableViewCell是从单独的nib文件加载的。 UICollectionView和UITableViewCell都必须动态调整大小。它可以工作,但是当最初加载tableview及其单元格时,调用cellForRowAtIndexPath时它们似乎没有正确的帧大小,这导致collectionView的大小不正确,因此UITableViewCell的高度为不适合它的内容。在cellForRowAtIndexPath内部,似乎要取走在nib文件中显示的tableview的框架,而不是该设备上tableView的正确大小。如果我调用[tableView reloadData]或上下滚动,则单元格的框架是正确的,因此collectionView的高度和tableViewCell的高度都是正确的。

Interestingly如果我更改设置,以便从情节提要中加载UIViewController,然后将相同的单元格作为原型单元格嵌入情节提要的UITableView中...现在,一切正常,并且正在加载UITableViewCell第一次通过时,该单元格的帧正确无误,因此,我不需要调用[tableView reloadData]即可正确调整每个单元格的大小。

我不确定为什么它的行为有所不同。理想情况下,我将使用nib解决方案,因为我想在不同位置重用相同的单元格,并且无法将UITableViewCell从一个情节提要板重复使用到另一个情节提要。

关于从nib文件加载时与从情节提要加载时UITableViewCell为什么在cellForRowAtIndexPath中尺寸不正确的任何猜测或想法?

ios uitableview uicollectionview uistoryboard
1个回答
0
投票

我认为在您的情况下,当您使用nib文件时,它们会在您的Viewcontroller的视图大小根据模拟器而改变之前呈现。而且由于viewcontroller的视图大小不正确,因此视图中的tableview大小也为false。当您重新加载表或滚动表视图时,视图大小将获得模拟器设备的大小,真实大小。然后单元格就适合表。调试时可以看到;视图的大小等于情节提要中的设备大小。

© www.soinside.com 2019 - 2024. All rights reserved.