iOS : UICollectionView inside UIScrollView index not incremented

标签 ios iphone scrollview collectionview

大家好 stackoverflow 的 friend 们,

目前正在开发一个应用程序,我的用户配置文件如下所示

http://i.imgur.com/H1N0ouX.jpg (抱歉,我没有足够的声誉来发布图片)

Header View 是用户的图片。 Tab View 是 2 个选项卡,一个带有 collectionview,另一个带有 tableview。

所有这些 View 都嵌套在一个 ScrollView 中

我的问题是,当我滚动该 View 时(根据元素数量以编程方式设置 Collection View 高度), Collection View 的索引不会增加。 Collection View 的可见单元格索引中仅加载前 6 个项目。

我需要从 Collection View 的项目转到项目的详细信息 View 。

我如何使用 scrollView 委托(delegate)来了解我的 Collection View 所在的位置。

我看过那些线程: iOS 7 Collection View inside Scroll View How to implement non-scrollable UICollectionView inside UIScrollView?

但没有人给我想要的答案。

我也尝试查看 scrollViewDidEndDecelerating 并根据 ScrollView 偏移量设置我的 Collection View 滚动偏移量,但我无法使其工作。

有什么建议吗?

谢谢

编辑:

您好,感谢您的回答,

为了回答你的问题,我可以滚动我的 collectionview,因为它在 ScrollView 中,我在 viewdidload 期间设置了我的 collectionview 高度(基于元素的数量)

我的问题是,我可以单击前 6 个项目并显示详细信息(通过 segue),但之后,无法识别选择,因为我的 Collection View 没有刷新索引。我可以一直滚动到我的 Collection View 的底部(我通过 scrollView 滚动)。

我的 collectionView 已启用用户交互,正如我所说,我可以选择前 6 个项目,然后无法识别选择。

我理解 UICollectionViewFlowLayout 问题,但是我该把这一行写在哪里?在 viewDidLoad 中?或者在 CollectionView 的委托(delegate)函数中?

如果您需要更多信息,我可以复制一些代码或向您展示 Storyboard中 View 的布局

提前致谢。

编辑 2:

图像, Storyboard:我的 View 布局

http://i.gyazo.com/c491786507db2effc702d910020515a2.png

代码,这里是collectionView的数据源函数

http://gyazo.com/3730caeb2b2a40fef9efec559171744f

Collection View 的委托(delegate)函数

http://i.gyazo.com/81fc9443b4367ecbd304e608ab0cc864.png

编辑3:

好吧,基本上这就是我想要重现的,

中间有多个选项卡的选项卡 View 和 Collection View ,所有这些都是可滚动的。 我无法理解的是,如果我将我的 topView 设置为 CollectionView 的标题,我就无法像我想要的那样切换选项卡,因为它位于标题内。

ViewController with TalbeView and CollectionView tabs like Google+ in IOS

最佳答案

您好,首先我需要关于您的问题的更多详细信息,但我假设您希望 UICollectionView 可滚动,但实际上它不滚动。

那么您能否检查以下几点:-

  1. 应启用 Collection View 的 UserEnableInteraction。

  2. 还要检查您为 UICollectionViewFlowLayout 赋予的值是多少,因为只需考虑您是否总共有 5 个元素要显示,并且您的 UICollectionViewFlowLayout 大小就像它可以在可见单元格索引中显示所有五个项目然后它不会滚动所以你需要增加 UICollectionViewFlowLayout 的大小来让它滚动。 例如

UICollectionViewFlowLayout *flowLayout = [[UICollectionViewFlowLayout alloc] init];

[flowLayout setItemSize:CGSizeMake(148, 148)];
  1. 如果您愿意,您可以从 UIScrollViewDelegate 方法中获得帮助,例如

    - (void)scrollViewDidEndDragging:(UIScrollView *)scrollView willDecelerate:(BOOL)decelerate
    {
    if (!decelerate)
    {
        // do your job
    }
    }
    

关于iOS : UICollectionView inside UIScrollView index not incremented,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/26992911/

相关文章:

objective-c - 如何模糊 UIImage 排除特定点。

ios - 如何将 GIF 图片从 url 写入文档目录

ios - 我可以在 iphone 12 上获得 PHAsset/PHAsset is hdr video/dolby vision 吗?

iphone - 混合大型四边形对性能的影响

react-native - react 原生 Android ScrollView scrollTo 不起作用

events - 在可见元素上 react native ScrollView 事件

c# - 推送通知无法使用 asp.net 到达 ios 设备?

iphone - 在 App Delegate 中,我需要释放我的 "window"和 "navigationController"吗?

ios - 旋转后获取正确的可读ContentGuide

ios - 以最简单的方式使 View Controller 可滚动