获取无法将类型[UITableViewCell.type]的值转换为预期的参数类型[_.Type]。
下面是扩展名
extension UITableView {
func registerCells<T>(ofTypes types:[T.Type]) where T:UITableViewCell {
types.forEach { (type) in
let nib = UINib(nibName: type.typeName, bundle: nil)
self.register(nib, forCellReuseIdentifier: type.typeName)
}
}
}
protocol NameDescribable {
var typeName: String { get }
static var typeName: String { get }
}
extension NameDescribable {
var typeName: String {
return String(describing: type(of: self))
}
static var typeName: String {
return String(describing: self)
}
}
extension NSObject: NameDescribable {}
extension Array: NameDescribable {}
,调用语句为:
mediaTable.registerCells(ofTypes: [AddCell.self,
ImageMediaCell.self])
答案 0 :(得分:1)
这是一个x-y问题。不需要泛型。无需协议。无需扩展。您需要的只是这个:
func registerCells(ofTypes types:[UITableViewCell.Type]) {
for type in types {
let typeName = String(describing:type.self)
let nib = UINib(nibName: typeName, bundle: nil)
self.register(nib, forCellReuseIdentifier: typeName)
}
}
使用同义重用标识符将表视图单元子类注册到同名笔尖。