【问题标题】:How to copy/duplicate a custom collectionview cell in Swift?如何在 Swift 中复制/复制自定义 collectionview 单元格?
【发布时间】:2018-11-23 21:04:15
【问题描述】:

我想将自定义collectionview 单元格从viewcontroller 复制到另一个,问题是collectionview 单元格一旦我点击它就会消失,因为-显然-将它作为子视图添加到第二个viewcontroller 中。

这里的大部分方法我都试过了Create a copy of a UIView in Swift

关于存档返回零。

关于原型和结构的其他内容,它不会返回视图的新地址。

func collectionView(_ collectionView: UICollectionView, didSelectItemAt indexPath: IndexPath)
    {
        struct ObjectToCopied {
            var objToBeRetrieved: UIView? = nil

            init(objToSaved : UIView?) {
                objToBeRetrieved = objToSaved
            }
        }
        let pickedView : UIView? = collectionView.cellForItem(at: indexPath)
        let tempObj = ObjectToCopied(objToSaved: pickedView)
        let copiedObj = tempObj
        let copiedView = copiedObj.objToBeRetrieved as? UIView
// here the copiedview's address is THE SAME as tempObj's ObjToBeRetrieved.
    }

自定义 CollectionView 单元格图片示例:

【问题讨论】:

    标签: ios swift uiview uicollectionview uicollectionviewcell


    【解决方案1】:

    不要复制 UIView 对象!

    你的模型不好。 您必须将数据——信息直接存储在单元格之外的某个地方。

    您必须使用indexPath 调用您的“数据库”来检索信息。没有了!

    关于您的问题。 此对象不会复制您的对象。

    struct ObjectToCopied {
                var objToBeRetrieved: UIView? = nil
    
                init(objToSaved : UIView?) {
                    objToBeRetrieved = objToSaved
                }
            }
    

    ObjectToCopied 是一个值类型。但是UIView 是一个引用类型。因此,objToBeRetrieved 包含与pickedView 相同的地址。解决方案?使用objToBeRetrieved = objToSaved.copy()。但是,请,真的不要这样做。这真的很糟糕。此外,我认为这会破坏某些东西。使用更好的应用模型——第一个建议。

    【讨论】:

      【解决方案2】:

      为什么需要复制 collectionView 单元格?您可以简单地将数据传递给下一个 viewController 并创建新的视图或单元格(无论您需要什么)并在其上显示数据。

      复制 collectionView 单元格的任何具体原因?

      【讨论】:

      • 不,只是想用几行代码复制它,而不是再次创建它的麻烦
      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2018-12-31
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多