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    
}

此错误出现在我定义自定义委托的地方:

协议"GenericTableViewDelegate"只能用作泛型约束,因为它具有 Self 或关联的类型要求

我理解这个问题,但我不知道该怎么办。

谢谢你的帮助。

正如错误所述:

协议"GenericTableViewDelegate">只能用作泛型约束,因为它具有 Self 或关联的类型要求。

因此,让我们改为这样做:

class GenericTableView<Delegate: GenericTableViewDelegate>: UITableView {
weak var customDelegate: Delegate?
}

最新更新