我正在尝试使用UITableViewCell
以及UICollectionViewCell
,除了一些细节外,它们具有几乎完全相同的功能。我想创建一个可以继承这两个的超类,但是却不知道该怎么做。我已经通过使用UITableViewController
超类为UICollectionViewController
和UIViewController
完成了此操作。每个子类都是UIViewController
类型,具有适当的委托/数据源方法。但是,没有UITableViewCell
或UICollectionViewCell
的数据源/委托方法。我怎样才能做到这一点?
谢谢!
最佳答案
您可以使用协议和协议扩展将相同的功能注入两个类:
@objc protocol MyProto {
func someFunc()
}
extension MyProto {
func someFunc() {
print("howdy")
}
}
class MyTableViewCell : UITableViewCell, MyProto {
}
class MyCollectionViewCell : UICollectionViewCell, MyProto {
}
let cell1 = MyTableViewCell()
cell1.someFunc() // "howdy"
let cell2 = MyCollectionViewCell()
cell2.someFunc() // "howdy"
...表明他们都在做相同的事情,而无需重复代码。
关于ios - 继承功能,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/35526766/