我正在尝试使用UITableViewCell以及UICollectionViewCell,除了一些细节外,它们具有几乎完全相同的功能。我想创建一个可以继承这两个的超类,但是却不知道该怎么做。我已经通过使用UITableViewController超类为UICollectionViewControllerUIViewController完成了此操作。每个子类都是UIViewController类型,具有适当的委托/数据源方法。但是,没有UITableViewCellUICollectionViewCell的数据源/委托方法。我怎样才能做到这一点?
谢谢!

最佳答案

您可以使用协议和协议扩展将相同的功能注入两个类:

@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/

10-13 03:48