エラー:クラス「UICollectionViewController」および「UICollectionViewLayout」からの多重継承

alessionossa

Xcode 8で、UICollectionViewControllerとUICollectionViewLayoutのサブクラスを作成しようとしていますが、エラーが発生します。

クラス「UICollectionViewController」および「UICollectionViewLayout」からの多重継承

しかし、彼らは異なる親クラスを持っています。カスタムサイズのセルを並べ替えるために、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
    }
}
Ike10

私のコメントを超えて。Swiftは多重継承をサポートしていませんUICollectionViewLayoutはクラスであるため、WorldCollectionViewControllerはすでに継承しいるため、継承するUICollectionViewControllerことはできません(継承しUICollectionViewLayoutたくない場合もあります)。この:

class ViewController: UIViewController, UITextFieldDelegate {

}

は多重継承ではなくUIViewController、プロトコルへの適合性からの単一の継承ですUITextFieldDelegate

プロトコルとは何か、およびそれらの使用方法について詳しくは、https//developer.apple.com/library/ios/documentation/Swift/Conceptual/Swift_Programming_Language/Protocols.htmlをご覧ください。

基本的に、プロトコルは一連のガイドラインのようなものです。これらのガイドラインは、メソッドとプロパティを指定します。クラスがプロトコルに準拠している場合は、プロトコルのガイドラインに記載されているメソッドとプロパティを実装する必要があります。例えば:

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

このプロトコルに準拠していることは、任意のオブジェクトしなければならない変数(ないようにしましょう定数)を持つpotatoタイプであるStringと暗黙的に開封されています。そのようです:

class PotatoFarmer: Farmer, hasAVariablePotato {

}

上記PotatoFarmerのクラスの継承Farmerクラスとが、一致していないhasAVariablePotato何もありませんので、potatovarは!したがって、上記はエラーを生成します:

タイプ「PotatoFarmer」はプロトコル「hasAVariablePotato」に準拠していません

このエラーを修正するには、プログラマーは次のようにプロトコルのプロパティとメソッドを追加する必要があります。

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

プロトコルに準拠しているため、エラーは表示されなくなります。

状況に応じて、との個別のサブクラスを作成する必要UICollectionViewLayoutありUICollectionViewLayoutAttributesます。このチェックを行う方法については、こちらをご覧ください(このテーマに関するすばらしい無料チュートリアル):https//www.raywenderlich.com/107439/uicollectionview-custom-layout-tutorial-pinterest

この記事はインターネットから収集されたものであり、転載の際にはソースを示してください。

侵害の場合は、連絡してください[email protected]

編集
0

コメントを追加

0

関連記事

分類Dev

Swift:クラスからの多重継承エラーUIViewControllerおよびUIIMagePickerController

分類Dev

クラス「UIViewController」および「UISearchBar」からの多重継承

分類Dev

クラス「NSObject」および「AWSDynamoDBObjectModel」からの多重継承

分類Dev

クラス「UIApplication」および「FBSDKApplicationDelegate」からの多重継承

分類Dev

Swift4-クラス「NSObject」および「UICollectionViewFlowLayout」からの多重継承

分類Dev

カスタムUIViewControllerおよびCocoaPodsライブラリからの多重継承

分類Dev

未知の派生クラスからインターフェース関数を呼び出す(多重継承)

分類Dev

2つの抽象クラスからの多重継承(Qt)

分類Dev

インターフェイスからの多重継承(抽象クラス)

分類Dev

多重継承におけるコンストラクター呼び出しのシーケンス

分類Dev

Java-外部クラスからジェネリックスを継承する内部クラスをオーバーライドすると、「名前の衝突」および「コンストラクターが未定義」エラーが発生します

分類Dev

モデルクラス、jsonエンコーディングおよび継承

分類Dev

Javaおよび継承コンストラクター

分類Dev

C ++配置の新規、継承およびデストラクタ

分類Dev

多重継承におけるクラスメンバーの曖昧性解消

分類Dev

クラスからすべてのフィールド(プライベートおよび継承も含む)を取得します

分類Dev

多重継承C ++-派生クラスからのBaseAアクセスBaseB変数

分類Dev

Pythonの多重継承、基本クラス関数の呼び出し

分類Dev

Pythonクラスの多重継承は1つの親から変数を継承するだけですか?

分類Dev

C ++の多重継承と明示的なコンストラクター呼び出し

分類Dev

ES6クラスの多重継承

分類Dev

cythoncdefクラスの多重継承

分類Dev

抽象クラスの多重継承

分類Dev

UMLクラス図-継承の多重度

分類Dev

共通のサブクラスから初期化するPythonの多重継承

分類Dev

多重継承による非協力的スーパークラスの適応

分類Dev

多重継承で派生クラス関数から適切な親クラス関数を呼び出す

分類Dev

同じ名前のメンバーを持つ基本クラスからのC ++多重継承

分類Dev

クラスから継承するときのコンパイルエラー

Related 関連記事

  1. 1

    Swift:クラスからの多重継承エラーUIViewControllerおよびUIIMagePickerController

  2. 2

    クラス「UIViewController」および「UISearchBar」からの多重継承

  3. 3

    クラス「NSObject」および「AWSDynamoDBObjectModel」からの多重継承

  4. 4

    クラス「UIApplication」および「FBSDKApplicationDelegate」からの多重継承

  5. 5

    Swift4-クラス「NSObject」および「UICollectionViewFlowLayout」からの多重継承

  6. 6

    カスタムUIViewControllerおよびCocoaPodsライブラリからの多重継承

  7. 7

    未知の派生クラスからインターフェース関数を呼び出す(多重継承)

  8. 8

    2つの抽象クラスからの多重継承(Qt)

  9. 9

    インターフェイスからの多重継承(抽象クラス)

  10. 10

    多重継承におけるコンストラクター呼び出しのシーケンス

  11. 11

    Java-外部クラスからジェネリックスを継承する内部クラスをオーバーライドすると、「名前の衝突」および「コンストラクターが未定義」エラーが発生します

  12. 12

    モデルクラス、jsonエンコーディングおよび継承

  13. 13

    Javaおよび継承コンストラクター

  14. 14

    C ++配置の新規、継承およびデストラクタ

  15. 15

    多重継承におけるクラスメンバーの曖昧性解消

  16. 16

    クラスからすべてのフィールド(プライベートおよび継承も含む)を取得します

  17. 17

    多重継承C ++-派生クラスからのBaseAアクセスBaseB変数

  18. 18

    Pythonの多重継承、基本クラス関数の呼び出し

  19. 19

    Pythonクラスの多重継承は1つの親から変数を継承するだけですか?

  20. 20

    C ++の多重継承と明示的なコンストラクター呼び出し

  21. 21

    ES6クラスの多重継承

  22. 22

    cythoncdefクラスの多重継承

  23. 23

    抽象クラスの多重継承

  24. 24

    UMLクラス図-継承の多重度

  25. 25

    共通のサブクラスから初期化するPythonの多重継承

  26. 26

    多重継承による非協力的スーパークラスの適応

  27. 27

    多重継承で派生クラス関数から適切な親クラス関数を呼び出す

  28. 28

    同じ名前のメンバーを持つ基本クラスからのC ++多重継承

  29. 29

    クラスから継承するときのコンパイルエラー

ホットタグ

アーカイブ