ios - 将 UICollectionView 和 UITableView 放在 iOS 的 UIScrollView 中是一种好习惯吗?
问题描述
我搜索了诸如“将表格视图/集合视图放入滚动视图中”之类的问题,但所有这些问题都在询问如何解决这样做时的一些意外行为,没有多少人问这是否是一个好习惯。
我曾经用来react-native
开发移动应用程序。他们有一个叫做 的组件FlatList
,有点像UITableView
Swift 中的。我曾经在FlatList
里面放了一个ScrollView
并实现了无限滚动,但是,发生了很多奇怪的事情:
我什至没有滚动到底部,但是
FlatList
一直在渲染更多的数据,好像它已经到了尽头,这导致了一段时间后内存泄漏当我试图获取当前滚动位置并基于它做一些动画时,它总是给我错误的滚动位置
ETC ...
我用 Swift 写了同样的东西,上面列出的问题都没有出现。但是,我想问一下,这样做会不会有任何潜在的问题?
为了帮助您理解为什么我想将表格视图和集合视图放在滚动视图中,请查看这张图片(如果您可以建议其他方法来做同样的事情,而无需在滚动视图中放置表格视图/集合视图,那简直太好了!)
更新
我将所有内容都放在滚动视图中,因为我想在用户输入文本视图时禁用拖动键盘
解决方案
TableView 和 CollectionView 继承自 ScrollView。因此,您提到的行为已经在这些组件上。
“最佳”做法是只有 1 个 CollectionView(没有 ScrollView 或 TableView)并创建自己的 CollectionViewLayout,这样您就可以为每个部分定义不同的布局和滚动,但这可能会变得有点过于复杂,因为您必须这样做自己实施这些行为。
另一种方法是有一个主 CollectionView,每个部分都有另一个 CollectionView(1 个用于照片,1 个用于“添加位置”、“标记人员”等)。
推荐阅读
- qt - 无法在 Maya 中导入 Qt for Python
- sql-server - 将逗号值分隔为单个值
- python - 使用 Qt Designer 在 PySide2 中实现信号/插槽时出错
- oracle - 如何在 Docker 上使用 oracle11g?
- arrays - 在特定范围内增加数组中每个元素的值
- node.js - 深度嵌套的 Express 路由器中的 Socket.io
- android - 在具有平台通道的 Flutter 中嵌入带有布局 XML 文件的 Kotlin 库
- java - Rest template.exchange 在对 dot net core 中运行 REST 服务的服务器执行 GET 请求时将响应作为垃圾返回
- vhdl - vunit_lib.array_pkg 中的 data_width 限制(32 位)是否有解决方法
- python - Selenium Webdriver (Python) - 无法在嵌套 iframe 中定位元素