我試圖使用UITableViewCell
以及UICollectionViewCell
,除了一些細節外,它們幾乎具有完全相同的功能。我想創建一個這兩個可以繼承的超類,但不知道如何去做。我通過使用UIViewController
超類來完成我的UITableViewController
和UICollectionViewController
。每個子類都是UIViewController
類型,它具有適當的委託/數據源方法。但是,UITableViewCell
或UICollectionViewCell
沒有數據源/委託方法。我怎樣才能做到這一點? 謝謝!繼承函數
Q
繼承函數
0
A
回答
0
可以注入相同的功能到兩個類:
@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"
然後,通過從基體子類
例如創建子類使用它們
...顯示他們都做同樣的事情,沒有重複的代碼。
0
您不需要UITableViewCell
和UICollectionViewCell
的任何進一步的協議聲明。
只需從每個分別創建一個基類子類並實現您需要的方法。使用協議加上協議擴展
class BaseTableViewCell: UITableViewCell {
@IBOutlet var foo : UILabel!
var bar = false
func method1() {}
func method2() {}
}
class MySpecialTableViewCell: BaseTableViewCell { }
相關問題
- 1. 繼承的繼承函數
- 2. const函數繼承
- 3. 多繼承函數
- 4. 函數參數的繼承
- 5. 如何繼承__del__函數
- 6. 在C++中繼承函數
- 7. 純虛函數和繼承
- 8. 函數指針和繼承
- 9. 函數調用繼承C++
- 10. C++繼承虛函數
- 11. C++繼承函數覆蓋
- 12. php靜態函數繼承
- 13. 繼承非構造函數
- 14. 免費函數和繼承
- 15. 構造函數和繼承
- 16. Java繼承 - 構造函數
- 17. C++類繼承:函數
- 18. 繼承和虛函數
- 19. Java構造函數繼承?
- 20. 構造函數和繼承?
- 21. 構造函數和繼承
- 22. C++繼承虛函數
- 23. 魔法函數和繼承
- 24. 構造函數繼承
- 25. 通過函數繼承?
- 26. Swift:UIViewController通用函數繼承
- 27. 繼承和成員函數
- 28. Java繼承/構造函數
- 29. 虛擬函數繼承
- 30. 用typeglobs繼承函數
你可以發佈兩個實現嗎? 「除了一些細節之外」非常模糊,我對好多細節感到好奇。 – tktsubota