web-dev-qa-db-ja.com

タイプ 'UICollectionViewCell'の値をキャストできませんでした

ストーリーボードでカスタムUICollectionViewCellを使用します。アプリを起動すると、次のメッセージが表示されます。

.

54
coco

XcodeのCollectionViewControllerのテンプレートには、viewDidLoadのこのコード行が付属しており、ストーリーボードの仕様が変更されます。

// Register cell classes
self.collectionView!.register(UICollectionViewCell.self, forCellWithReuseIdentifier: reuseIdentifier)

その行を単に削除します。

古いSwift=バージョンでは、行は次のとおりです。

// Register cell classes
self.collectionView!.registerClass(UICollectionViewCell.self, forCellWithReuseIdentifier: reuseIdentifier)
187
coco

viewDidLoad()ICollectionViewCell classでセルを登録したため、この問題に直面しています。 cellForItemAtIndexPathCustomSubcalssCollectionViewCellがdequeueReusableCellに使用されています。

registerClassdequeueReusableCellが同じクラスであることを確認して、問題を解決してください

self.registerClass(SomeUICollectionCellClass.self, forCellWithReuseIdentifier: reuseIdentifier)

let cell = collectionView.dequeueReusableCellWithReuseIdentifier(reuseIdentifier, forIndexPath: indexPath) as! SomeUICollectionCellClass
46
Stephen Chen

(Xcodeインスペクターの)カスタムクラスのクラスがTestProject.CollectionViewCellのカスタムクラスではなく、デフォルトのUICollectionViewCellに設定されている場合、このエラーを受け取りました。

修正するには、カスタムクラスを実装に変更します。

Custom Class Section

Document Outline

7
KKG

ユニットテストでStoryboardからViewControllerをインスタンス化するときにこのエラーが発生しました。

storyboard.instantiateViewControllerWithIdentifier("someVC") as! MyViewController

問題は、Identityインスペクターの特定のモジュールをStoryboardのVCに割り当てたことです。実行中のアプリケーションモジュールである現在のモジュールとテストテスト中のモジュール。

5
Sebastian
 self.collectionView!
     .register(MyCollectionViewCell.self, 
               forCellWithReuseIdentifier: reuseIdentifier
              )

この行を削除する必要はありません。コードを使用してクラスを登録する場合は、UICollectionViewCell.selfによって継承された独自のセルクラスを登録します。

2
Umair Khalid

ストーリーボードとコードの両方でセルクラスを登録すると、このエラーが発生します。どちらか一方を選択し、両方を選択しないでください。問題はなくなります。

Appleテンプレートに次のコードを含めなかったなら:

self.registerClass(SomeUICollectionCellClass.self, forCellWithReuseIdentifier: reuseIdentifier)

特に、ストーリーボードを介してセルを登録することを常に推奨しているためです。物事を非常に混乱させます。

0
kakubei