gpt4 book ai didi

ios - 错误 : Multiple inheritance from classes 'UICollectionViewController' and 'UICollectionViewLayout'

转载 作者:搜寻专家 更新时间:2023-11-01 07:22:34 24 4
gpt4 key购买 nike

在 Xcode 8 中,我试图创建 UICollectionViewController 和 UICollectionViewLayout 的子类,但出现错误:

Multiple inheritance from classes 'UICollectionViewController' and 'UICollectionViewLayout'

但是他们有不同的 parent 类(class)。我正在尝试关注 http://nshint.io/blog/2015/07/16/uicollectionviews-now-have-easy-reordering/重新排序自定义大小单元格的教程

class WordCollectionViewController: UICollectionViewController, UICollectionViewLayout {
// ...
override func invalidationContext(forInteractivelyMovingItems targetIndexPaths: [IndexPath], withTargetPosition targetPosition: CGPoint, previousIndexPaths: [IndexPath], previousPosition: CGPoint) -> UICollectionViewLayoutInvalidationContext {
var context = super.invalidationContext(forInteractivelyMovingItems: targetIndexPaths, withTargetPosition: targetPosition, previousIndexPaths: previousIndexPaths, previousPosition: previousPosition)

return context
}
}

最佳答案

超出我的评论。 Swift 支持多重继承。 UICollectionViewLayout 是一个类,因此由于您的 WorldCollectionViewController 已经从 UICollectionViewController 继承,您不能从 UICollectionViewLayout 继承(您还不想)。这:

class ViewController: UIViewController, UITextFieldDelegate {

}

不是多重继承,而是来自 UIViewController 的单一继承,并且符合协议(protocol) UITextFieldDelegate

您可以在此处详细了解什么是协议(protocol)以及如何使用它们:https://developer.apple.com/library/ios/documentation/Swift/Conceptual/Swift_Programming_Language/Protocols.html

从本质上讲,协议(protocol)就像一组指南。这些准则指定方法和属性。如果一个类符合协议(protocol),那么它必须实现协议(protocol)指南中描述的方法和属性。例如:

protocol hasAVariablePotato {
var potato: String! { get set }
}

任何符合此协议(protocol)的对象必须有一个变量(不是 let 常量)potato,类型为 String 并隐式解包.像这样:

class PotatoFarmer: Farmer, hasAVariablePotato {

}

上面的PotatoFarmer类继承自一个Farmer类,但不符合hasAVariablePotato,因为有没有 potato 变量!所以上面会产生错误:

Type 'PotatoFarmer' does not conform to protocol 'hasAVariablePotato'

要修复此错误程序员必须添加协议(protocol)的属性和方法,如下所示:

class PotatoFarmer: Farmer, hasAVariablePotato {
var potato: String!
}

错误现在将消失,因为您已遵守协议(protocol)。

对于您的情况,您希望制作 UICollectionViewLayoutUICollectionViewLayoutAttributes单独的子类。要查看如何执行此操作,请在此处查看(有关该主题的精彩免费教程): https://www.raywenderlich.com/107439/uicollectionview-custom-layout-tutorial-pinterest

关于ios - 错误 : Multiple inheritance from classes 'UICollectionViewController' and 'UICollectionViewLayout' ,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/38041110/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com