【问题标题】:Detect section of UICollectionViewCell检测 UICollectionViewCell 的部分
【发布时间】:2016-11-18 05:37:46
【问题描述】:

我有自定义布局的 UICollectionView,所以有一行项目,它们随着分页滚动。还有多个部分,所以最终视图就像 App Store 的最终视图示例如下,

问题是,在每个节页脚中放置一个页面控件,它将检测节的当前页面。我不知道如何检测女巫部分滚动视图偏移已更改。将不胜感激任何帮助或其他解决方案!

【问题讨论】:

    标签: ios swift uiscrollview uicollectionview uipagecontrol


    【解决方案1】:

    您可以使用以下委托方法获取选择集合视图的部分和行。

    // Swift
    func collectionView(_ collectionView: UICollectionView,
    didSelectItemAtIndexPath indexPath: NSIndexPath)
    
    // Obj-C
    - (void)collectionView:(UICollectionView *)collectionView
    didSelectItemAtIndexPath:(NSIndexPath *)indexPath
    

    这里,只有在选择单元格时才会在委托上调用此方法。它返回 indexPath。

    indexPath 包含您现在要求的两个属性。

    indexPath.row - 为项目提供当前选定项目部分的索引。 indexPath.section - 给出在 collectionView 中使用的当前部分

    注意:计数从 0 开始,而不是 1。

    所以如果我选择“ComboCritters”(看上图),我会得到 0 表示 indexPath.section 指的是“我们喜欢的新游戏!”并且, 2 表示 indexPath.row 表示选择了第 3 项。

    而且,这就是您在应用中获取所选部分的方式。

    亲切的问候,
    苏曼·阿迪卡里

    【讨论】:

    • 问题是关于滚动
    • 当您点击屏幕时,您仍然会触发将提供 indexPath 的 willSelectRowAtIndexPath 方法。
    【解决方案2】:

    如果您希望它们独立滚动,则不能将图表中以红色突出显示的三个部分作为同一集合视图中的单独部分。除非您有一个非常复杂的布局子类,否则滚动会发生在整个集合视图中,而不是其中的一部分。

    拥有三个集合视图会简单得多,每个部分一个。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2017-12-21
      • 1970-01-01
      相关资源
      最近更新 更多