ストーリーボードでカスタムUICollectionViewCellを使用します。アプリを起動すると、次のメッセージが表示されます。
.
XcodeのCollectionViewControllerのテンプレートには、viewDidLoadのこのコード行が付属しており、ストーリーボードの仕様が変更されます。
// Register cell classes
self.collectionView!.register(UICollectionViewCell.self, forCellWithReuseIdentifier: reuseIdentifier)
その行を単に削除します。
古いSwift=バージョンでは、行は次のとおりです。
// Register cell classes
self.collectionView!.registerClass(UICollectionViewCell.self, forCellWithReuseIdentifier: reuseIdentifier)
viewDidLoad()
でICollectionViewCell classでセルを登録したため、この問題に直面しています。 cellForItemAtIndexPath
でCustomSubcalssCollectionViewCellがdequeueReusableCellに使用されています。
registerClassとdequeueReusableCellが同じクラスであることを確認して、問題を解決してください
self.registerClass(SomeUICollectionCellClass.self, forCellWithReuseIdentifier: reuseIdentifier)
let cell = collectionView.dequeueReusableCellWithReuseIdentifier(reuseIdentifier, forIndexPath: indexPath) as! SomeUICollectionCellClass
ユニットテストでStoryboardからViewController
をインスタンス化するときにこのエラーが発生しました。
storyboard.instantiateViewControllerWithIdentifier("someVC") as! MyViewController
問題は、Identityインスペクターの特定のモジュールをStoryboardのVCに割り当てたことです。実行中のアプリケーションモジュールである現在のモジュールとテストテスト中のモジュール。
self.collectionView!
.register(MyCollectionViewCell.self,
forCellWithReuseIdentifier: reuseIdentifier
)
この行を削除する必要はありません。コードを使用してクラスを登録する場合は、UICollectionViewCell.self
によって継承された独自のセルクラスを登録します。
ストーリーボードとコードの両方でセルクラスを登録すると、このエラーが発生します。どちらか一方を選択し、両方を選択しないでください。問題はなくなります。
Appleテンプレートに次のコードを含めなかったなら:
self.registerClass(SomeUICollectionCellClass.self, forCellWithReuseIdentifier: reuseIdentifier)
特に、ストーリーボードを介してセルを登録することを常に推奨しているためです。物事を非常に混乱させます。