【问题标题】:Move CollectionViewCell to another section将 CollectionViewCell 移动到另一个部分
【发布时间】:2019-03-19 15:47:15
【问题描述】:

我有一个 UIViewController,里面有一个 collectionView。布局可能看起来令人困惑,但我正在使用水平滚动 UICollectionViewCells,分 3 个部分介绍。 主集合视图由 3 个部分组成。我为每个部分访问 3 个不同的 UICollectionViewCell 类,因为它为每个部分获取不同的数据。获取数据后,它会将另一个 Cell 类出列,该类与所有部分访问的相同。

每个单元格中有 2 个按钮。当我按下按钮时,数据库中的值会发生变化。当我重新运行程序时,按下按钮的单元格已移动到相应的部分,根据更改它应该在其中。但是,我想在按下按钮后立即实现这一点。如何将单元格从一个部分移动到另一个部分,记住它们呈现的单元格在组成部分的 collectionview 单元格内,然后在更大的 UICollectionView 内。 我已经尝试研究如何做到这一点,但没有运气,而且每个人似乎都在使用拖放方法,这对于我想要实现的目标来说似乎太复杂了。将不胜感激。

谢谢

【问题讨论】:

  • 这取决于你的数据源的结构。基本上 1) 从源部分数组中删除给定索引路径处的项目并暂时保留它。 2) 将所需索引处的项目插入目标节数组。 3) 致电collectionView.beginUpdates()。 4) 调用collectionView.deleteRows... 传递源索引路径。 5) 调用collectionView.insertRows... 传递目标索引路径。 6) 致电collectionView.endUpdates().
  • 是的,这个逻辑似乎是正确的方法,但是我遇到的麻烦是弄清楚如何在部分之间移动项目,因为 collectionView 的每个部分都有自己的 UICollectionViewCell 类......
  • 例如;具有 3 个部分的 collectionView。然后在 cellForItem 中的 UICollectionViewCell 取决于部分。 if indexPath.section == 0 { dequeue AnimalsILikeCollectionViewCellsHolder() else if indexPath.section == 1 { dequeue AnimalsIHateCollectionViewCellsHolder() } 等... 然后在这两个 CellHolders 中的每一个中,我将一个 AnimalsCollectionViewCell 出列,它允许图片出现以及一个喜欢和不喜欢的按钮。当我单击不喜欢按钮时,我希望单元格将自身从 likeSection 删除到 dislikeSection。如果这是有道理的,我会很感激任何帮助
  • 嘿@ImrulKayes - 我找到了部分解决方案。我现在已经绞尽脑汁太久了,并尝试了不同的实现。我设法做的是从具有按钮的单元格中回调,当按下它时,它会回调到已从其出列的单元格中......然后它从数组中删除该项目,然后通过批处理更新重新加载该部分。这会从它所在的 collectionviewcell 中删除该单元格,但是一旦它被删除......现在我需要将该单元格添加到父 collectionview 的另一部分中的 OTHER collectionview 但在执行时遇到问题
  • @ImrulKayes - 别担心,这不是数据问题,而是 UI 问题。设法弄清楚了。必须继承 UICollectionViewFlowLayout 并做一些调整。如果您有兴趣,这是我关注的链接-stackoverflow.com/questions/45614617/…

标签: ios swift uicollectionviewcell collectionview sections


【解决方案1】:

我实现上述情况的方法是在从集合视图中删除单元格时使用自定义委派。一个容器 CollectionView 有两个部分,两个不同的单元格包含两个不同的 Horizo​​ntal UICollectionViews。这两个collectionview 的单元格有UIButtons。当点击一个 collectionView 的按钮时,该特定单元格被删除,自定义委托方法调用并填充另一个 CollectionView 的单元格。 This is the link of the project 我为这个特定场景创建了。为了更好地理解,这里有一个 GIF 用于演示。

【讨论】:

    猜你喜欢
    • 2015-03-22
    • 1970-01-01
    • 2014-02-22
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2017-12-08
    • 1970-01-01
    相关资源
    最近更新 更多