Swift: Как создать пользовательский переопределенный UITableView с универсальным типом для своего делегата? - PullRequest
1 голос
/ 19 сентября 2019

Я хотел бы создать 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 или связанные с типами

Я понимаю эту проблему, но понятия не имею, что вместо этого делать.

Спасибо за помощь.

1 Ответ

1 голос
/ 19 сентября 2019

В качестве ошибки указывается:

Протокол 'GenericTableViewDelegate' может использоваться только в качестве общего ограничения , поскольку он имеет собственные требования или требования связанного типа.

Итак, давайте сделаем это вместо:

class GenericTableView<Delegate: GenericTableViewDelegate>: UITableView {
    weak var customDelegate: Delegate?
}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...