作者热门文章
- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
大家好,你们好吗?希望你们一切都好。
我需要一点帮助,在此先感谢您。
我的自定义单元格中有一个自定义委托(delegate),如下所示:
protocol customTableViewCellDelegate: NSObjectProtocol {
func buttonPressed(customCell: customTableViewCell)
}
我有一个扩展,可以在表格 View 中设置单元格,如下所示:
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?”
我不知道如何正确使用泛型,也不知道如何修复这个错误。
希望大家帮帮我。感谢您花时间阅读本文,祝您有美好的一天。
最佳答案
您正在尝试将 View Controller 的类分配给委托(delegate)属性,而不是 View Controller 实例。你想要的是:
cell.delegate = viewController
不过我不明白你为什么要使用泛型。你可以只使用协议(protocol):
protocol CustomTableViewCellDelegate: NSObjectProtocol {
func buttonPressed(customCell: UITableViewCell)
}
extension UITableView {
func layoutTemplateCell(indexPath: IndexPath, viewController: CustomTableViewCellDelegate) -> UITableViewCell {
let cell = UITableViewCell()
switch template {
case customCell:
let cell = self.dequeueReusableCell(withIdentifier: customTableViewCell.identifier) as! CustomTableViewCell
cell.delegate = viewController
return cell
default:
break
}
return cell
}
}
关于ios - 使用泛型设置 cellDelegate,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/42388548/
我是一名优秀的程序员,十分优秀!