【发布时间】:2020-02-24 09:38:43
【问题描述】:
我正在将我的 iOS 应用程序从表格视图更新为集合视图,以支持“网格化”选项。 我有两种细胞类型。一种更适合“tableView”类型的外观,并占据屏幕的整个宽度。另一个是更适合网格的单元格。
我不能对两者使用相同的单元格类型,因为 tableView 类型的单元格比网格单元格具有更多的水平信息。
我有一个按钮按下事件,它将在我的单元格类型之间循环,更新布局并适当地更改单元格重用标识符。问题是,已经在视图中的任何单元格都不会更改为新的单元格类型。如果我稍微滚动一下,新的单元格类型就会开始出现。
我想这与 collectionView 采用 indexPath 的 dequeue 函数有关。我可以显式地重新加载这些单元格以让它们使用新类型,但这会导致不需要的动画,更不用说感觉像 hack。
如何动态切换单元格类型?
链接是演示该问题的视频。
如您所见,在我更改单元格后,它们仍然使用旧的 NIB(包含所有额外信息)。但如果我向下滚动,将使用新的 NIB。
【问题讨论】:
-
在单元格更改后调用 layoutifneed
-
更改后重新加载单元格
-
我尝试了 layoutifneeded 但没有奏效。更改后我正在重新加载单元格,但这会导致一种双重动画,如果可能的话,我想避免。
标签: ios uicollectionview uicollectionviewcell uicollectionviewlayout