ios - Swift:如何为其委托创建一个具有泛型类型的自定义覆盖 UITableView?
问题描述
我想创建一个 UITableView,并使用这个新的委托。基本上:
class GenericTableView: UITableView {
weak var customDelegate: GenericTableViewDelegate?
}
protocol GenericTableViewDelegate : NSObjectProtocol {
func genericTableView(_ genericTableView: GenericTableView, numberOfRowsInSection section: Int) -> Int
}
但现在我想添加一个与此委托关联的泛型类型:
protocol GenericTableViewDelegate : NSObjectProtocol {
associatedtype T
func cellFor(object: T) -> UITableViewCell
}
这个错误出现在我定义customDelegate的地方:
协议 'GenericTableViewDelegate' 只能用作通用约束,因为它具有 Self 或关联的类型要求
我理解这个问题,但我不知道该怎么做。
谢谢您的帮助。
解决方案
正如错误所述:
协议 'GenericTableViewDelegate'只能用作通用约束,因为它具有 Self 或关联的类型要求。
所以,让我们这样做:
class GenericTableView<Delegate: GenericTableViewDelegate>: UITableView {
weak var customDelegate: Delegate?
}
推荐阅读
- c# - 通过 C# 从市场映像中提升 Azure VM
- django - Django-tables2 为列标题指定 verbose_name 无效
- java - 使用应用程序属性文件在本机查询中选择表名?
- docker - FFmpeg 使用 -loop 标志的意外行为
- swift - Swift:将 SwiftUI 元素添加到 UIKit 项目:无法正确应用约束
- performance - System.Data.SQLite 版本 1.0.74 和最新的 1.0.113 之间有什么变化?
- excel - 如何在python中计数,并直接在数据框中创建列(与多列分组)
- python - 读取 CSV 文件并跳过一些值
- python - 为什么我的 Keras LSTM 模型在时间序列预测上与 RandomForest 相比表现糟糕?
- mysql - MySQL:根据状态查找客户的平均余额