程序问答   发布时间:2022-06-01  发布网站:大佬教程  code.js-code.com
大佬教程收集整理的这篇文章主要介绍了使用 ReusableKit swift 注册 UITableViewCell大佬教程大佬觉得挺不错的,现在分享给大家,也给大家做个参考。

如何解决使用 ReusableKit swift 注册 UITableViewCell?

开发过程中遇到使用 ReusableKit swift 注册 UITableViewCell的问题如何解决?下面主要结合日常开发的经验,给出你关于使用 ReusableKit swift 注册 UITableViewCell的解决方法建议,希望对你解决使用 ReusableKit swift 注册 UITableViewCell有所启发或帮助;

我正在尝试构建通用的 getAll 方法 will,它只返回可重用单元的实例。 通过创建,我不必手动注册单元格,我只需将其添加到数组中,然后在 registerCellsFromreusable() 中将其注册。

enum Reusable {
    static let ListOptiontableCell = ReusableCell<ListOptiontableCell>(nibname: "ListOptiontableCell")
    static let seperatortableCell = ReusableCell<SeperatortableCell>(nibname: "SeperatortableCell")
    
    static func getAll<T>() -> [ReusableCell<T>] where T : UItableVIEwCell {
        return [ListOptiontableCell,seperatortableCell]
    }
}

overrIDe func vIEwDIDLoad() {
    super.vIEwDIDLoad()
    
    registerCellsFromreusable()
}

private func registerCellsFromreusable() {
    Reusable.getAll().forEach { tableVIEw.register($0) }
}

很酷的东西,但我不知道为什么会出现以下问题,即使 ListOptiontableCellSeperatortableCell 继承自 UItableVIEwCell

使用 ReusableKit swift 注册 UITableViewCell

注意:我使用 ReusableKit 来做到这一点。

解决方法

我对 ReusableKit 框架没有深入了解,但为了使这项工作能够正常工作,您必须应用某种形式的类型擦除。 Swift 无法创建不同类型的正确类型集合(由于这里使用了泛型),因此我们必须找到一种类型,我们可以将它们转换为符合您需求的类型。在这种情况下,这将是 ReusableCell<UITableViewCell>。我们只关心 ReusableCell 中的 T 最后继承自 UITableViewCell

// Create an extension on ReusableCell to type erase it
extension ReusableCell {
    var asTypeErasedReusableCell: ReusableCell<UITableViewCell> {
        ReusableCell<UITableViewCell>(nibName: nibName)
    }
}

enum Reusable {
    static let listOptionTableCell = ReusableCell<ListOptionTableCell>(nibName: "ListOptionTableCell")
    static let seperatorTableCell = ReusableCell<SeperatorTableCell>(nibName: "SeperatorTableCell")
    
    static func getAll() -> [ReusableCell<UITableViewCell>] {
        [
            listOptionTableCell.asTypeErasedReusableCell,seperatorTableCell.asTypeErasedReusableCell
        ]
    }
}

请注意,这是一个非常简单的类型擦除实现。有更复杂的方法可以实现这一点。

大佬总结

以上是大佬教程为你收集整理的使用 ReusableKit swift 注册 UITableViewCell全部内容,希望文章能够帮你解决使用 ReusableKit swift 注册 UITableViewCell所遇到的程序开发问题。

如果觉得大佬教程网站内容还不错,欢迎将大佬教程推荐给程序员好友。

本图文内容来源于网友网络收集整理提供,作为学习参考使用,版权属于原作者。
如您有任何意见或建议可联系处理。小编QQ:384754419,请注明来意。