首页 > 解决方案 > 将 UICollectionView 和 UITableView 放在 iOS 的 UIScrollView 中是一种好习惯吗?

问题描述

我搜索了诸如“将表格视图/集合视图放入滚动视图中”之类的问题,但所有这些问题都在询问如何解决这样做时的一些意外行为,没有多少人问这是否是一个好习惯。

我曾经用来react-native开发移动应用程序。他们有一个叫做 的组件FlatList,有点像UITableViewSwift 中的。我曾经在FlatList里面放了一个ScrollView并实现了无限滚动,但是,发生了很多奇怪的事情:

  1. 我什至没有滚动到底部,但是FlatList一直在渲染更多的数据,好像它已经到了尽头,这导致了一段时间后内存泄漏

  2. 当我试图获取当前滚动位置并基于它做一些动画时,它总是给我错误的滚动位置

  3. ETC ...

我用 Swift 写了同样的东西,上面列出的问题都没有出现。但是,我想问一下,这样做会不会有任何潜在的问题?

为了帮助您理解为什么我想将表格视图和集合视图放在滚动视图中,请查看这张图片(如果您可以建议其他方法来做同样的事情,而无需在滚动视图中放置表格视图/集合视图,那简直太好了!)

在此处输入图像描述

更新

我将所有内容都放在滚动视图中,因为我想在用户输入文本视图时禁用拖动键盘

标签: iosuitableviewuiscrollviewuicollectionview

解决方案


TableView 和 CollectionView 继承自 ScrollView。因此,您提到的行为已经在这些组件上。

“最佳”做法是只有 1 个 CollectionView(没有 ScrollView 或 TableView)并创建自己的 CollectionViewLayout,这样您就可以为每个部分定义不同的布局和滚动,但这可能会变得有点过于复杂,因为您必须这样做自己实施这些行为。

另一种方法是有一个主 CollectionView,每个部分都有另一个 CollectionView(1 个用于照片,1 个用于“添加位置”、“标记人员”等)。


推荐阅读