Возможное решение - добавить протокол
protocol Reusable {
var delegate : ReusableDelegate { get set } // change the type to the real delegate type
}
и ограничить тип generic c протоколом. Вы должны ограничить тип generi c UITableViewCell
в любом случае
func configureQuestionCell<T>(cellType: T) where T : UITableViewCell & Reusable {
let cell = self.blockContent.dequeueReusableCell(withIdentifier: ReusableCellID.ratingCell.rawValue) as! T
cell.delegate = self
}
Для нескольких различных типов делегатов используйте связанный тип
protocol Reusable {
associatedtype DelegateType
var delegate : DelegateType { get set }
}
. В ячейке выберите протокол и добавьте
typealias DelegateType = < The actual delegate type of the cell >