虽然我在处理泛型,但是却陷入了相关类型的协议中。 基本上,我想在这里实现什么,我想将“ ReusableView”,“ NibLoadableView”看作是可选的,并且如果不使用它们,我也不想使我的班级变得井井有条。
例如,如果我仅使用“ ReusableView”进行编译,则会抛出错误
“ ExampleBannerPresenter”不符合协议“ BannerPresenter”
那么我如何才能像下面那样使用我的单元格?
final class ExampleBannerCell: UICollectionViewCell, ReusableView {
final class ExampleBannerCell: UICollectionViewCell, ReusableView, NibLoadableView {
这是我的代码
public protocol BannerPresenter: class {
associatedtype CellType: UICollectionViewCell, ReusableView, NibLoadableView
func configure(cell: CellType, at index: Int)
}
// MARK: - NibLoadableView
public protocol NibLoadableView: class {
static var nibName: String { get }
}
extension NibLoadableView where Self: UIView {
public static var nibName: String {
return String(describing: self)
}
}
// MARK: - ReusableView
public protocol ReusableView: class {
static var defaultReuseIdentifier: String { get }
}
extension ReusableView where Self: UIView {
public static var defaultReuseIdentifier: String {
return String(describing: self)
}
}