将UICollectionView和UITableView放在iOS中的UIScrollView中是一个好习惯吗?

时间:2018-04-28 20:14:04

标签: ios uitableview uiscrollview uicollectionview

我已经搜索了类似"将表格视图/集合视图放在滚动视图中的问题",但所有这些问题都在询问如何解决一些意外行为,没有多少人会问这是不是一个好习惯。

我曾经使用react-native来开发移动应用。他们有一个名为FlatList的组件,类似于Swift中的UITableView。我曾经在FlatList内放了ScrollView并实现了无限滚动,然而,发生了许多奇怪的事情:

  1. 我甚至没有滚动到底部,但是FlatList不断渲染更多数据,就像它已经到达终点一样,一段时间后导致内存泄漏

  2. 当我试图获取当前滚动位置并根据它进行一些动画时,它总是给我错误的滚动位置

  3. 等...

  4. 我在Swift中写了同样的事情,上面列出的问题都没有出现。但是,我想问一下,这样做是否存在任何潜在的问题?

    为了帮助您理解我为什么要放置一个表视图&滚动视图中的集合视图,看看这张图片(如果你可以在滚动视图中没有表视图/集合视图的情况下建议其他方法来做同样的事情,那就太棒了!)

    enter image description here

    更新

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

1 个答案:

答案 0 :(得分:0)

TableView和CollectionView继承自ScrollView。所以你提到的行为已经在那些组件上了。

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

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