0
嗨,你好嗎?希望你們很好。使用泛型設置cellDelegate
我需要一點幫助,我提前感謝你。
我有一個自定義委託在我的自定義單元格,就像這樣:
protocol customTableViewCellDelegate: NSObjectProtocol {
func buttonPressed(customCell: customTableViewCell)
}
和我有一個擴展設置在表視圖中的單元格,就像這樣:
extension UITableView {
func layoutTemplateCell<T: UIViewController>(indexPath: IndexPath, viewController: T.Type) -> UITableViewCell {
let cell = UITableViewCell()
switch template {
case customCell:
let cell = self.dequeueReusableCell(withIdentifier: customTableViewCell.identifier) as! customTableViewCell
cell.delegate = viewController.self
return cell
default:
break
}
return cell
}
}
但我在cell.delegate中出現錯誤「無法將類型爲T.type的值指定爲customTableViewCellDelegate?」
我不知道如何正確使用泛型,我不知道如何解決這個錯誤。
我希望你們能幫助我。感謝您花時間閱讀本文,祝您有美好的一天。
嗨,我使用泛型,因爲我想使用更多的一個viewController的擴展。想象一下,所有具有tableView的viewController都將使用相同的擴展名。 –
仍然沒有必要使用泛型。佈局功能不關心;所有它需要知道的是,它有一些符合協議 – Paulw11
嗨保羅,它只適用,因爲你使用一個這樣的viewController像這樣 func layoutTemplateCell(indexPath:IndexPath,viewController:CustomTableViewCellDelegate) - > UITableViewCell 但我想使用多個viewController,所以我必須做這樣的事情 func layoutTemplateCell(indexPath:IndexPath,viewController:UIViewController) - > UITableViewCell 當我做同樣的錯誤 –