it-swarm.com.de

Der Wert des Typs 'UICollectionViewCell' konnte nicht umgewandelt werden.

Ich verwende eine benutzerdefinierte UICollectionViewCell in meinem Storyboard ... Wenn ich die App starte, erhalte ich die folgende Meldung: 

Could not cast value of type 'UICollectionViewCell' to TestProject.CollectionViewCell.

48
coco

Die Vorlage für einen CollectionViewController in Xcode enthält eine Codezeile in viewDidLoad, durch die die Spezifikation in Ihrem Storyboard geändert wird.

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

Diese Zeile einfach löschen.

In älteren Swift-Versionen lautet die Zeile:

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

Ich stehe vor diesem Problem, weil ich in der viewDidLoad() meine Zelle mit der Klasse UICollectionViewCell registriert habe. In meiner cellForItemAtIndexPath benutzte CustomSubcalssCollectionViewCell für dequeueReusableCell. 

stellen Sie sicher, dass registerClass und dequeueReusableCell dieselbe Klasse sind, um das Problem zu lösen

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

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

Ich habe diesen Fehler erhalten, wenn für die benutzerdefinierte Klasse (im Xcode-Inspektor) immer noch die Standardklasse UICollectionViewCell anstelle meiner benutzerdefinierten Klasse für TestProject.CollectionViewCell festgelegt wurde.

Um dies zu beheben, ändern Sie einfach die benutzerdefinierte Klasse in Ihre Implementierung.

 Custom Class Section

 Document Outline

5
KKG

Ich habe diesen Fehler beim Instanziieren eines ViewController von einem Storyboard in meinem Unit-Test festgestellt. 

storyboard.instantiateViewControllerWithIdentifier("someVC") as! MyViewController

Das Problem war, dass ich dem VC im Storyboard ein bestimmtes Modul im Identitätsinspektor zugewiesen hatte. Ich habe es entfernt, so dass standardmäßig das aktuelle Modul verwendet wird. Dies ist das Anwendungsmodul während der Ausführung und das Testmodul während des Tests.

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

Sie müssen diese Zeile nicht löschen. Sie registrieren Ihre eigene Zellklasse, die von UICollectionViewCell.self geerbt wurde, wenn Sie die Klasse mithilfe von Code registrieren möchten 

1
Umair Khalid

Diese Fehlermeldung wird angezeigt, wenn Sie Ihre Zellklasse sowohl im Storyboard als auch im Code registrieren. Wählen Sie das eine oder das andere, niemals beides, und das Problem verschwindet.

Ich wünschte, Apple hätte diesen Code nicht in seine Vorlagen aufgenommen:

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

Vor allem, da sie immer empfehlen, dass Sie Ihre Zellen über Storyboard registrieren. Macht die Dinge sehr verwirrend.

0
kakubei