Swift:如何为其委托创建具有通用类型的自定义重写 UITableView?
Swift: How to create a custom overridden UITableView with a generic type for its delegate?
我想创建一个 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 的地方:
Protocol 'GenericTableViewDelegate' can only be used as a generic constraint because it has Self or associated type requirements
我明白这个问题,但我不知道该怎么做。
感谢您的帮助。
如错误所述:
Protocol 'GenericTableViewDelegate' can only be used as a generic constraint because it has Self or associated type requirements.
所以,让我们改为这样做:
class GenericTableView<Delegate: GenericTableViewDelegate>: UITableView {
weak var customDelegate: Delegate?
}
我想创建一个 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 的地方:
Protocol 'GenericTableViewDelegate' can only be used as a generic constraint because it has Self or associated type requirements
我明白这个问题,但我不知道该怎么做。
感谢您的帮助。
如错误所述:
Protocol 'GenericTableViewDelegate' can only be used as a generic constraint because it has Self or associated type requirements.
所以,让我们改为这样做:
class GenericTableView<Delegate: GenericTableViewDelegate>: UITableView {
weak var customDelegate: Delegate?
}