大佬教程收集整理的这篇文章主要介绍了使用 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) }
}
很酷的东西,但我不知道为什么会出现以下问题,即使 ListOptiontableCell
和 SeperatortableCell
继承自 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,请注明来意。