2016-08-15 4 views
2

Ich versuche, das folgende zu werfen, aber kommt immer mit dem folgenden Fehler auf.UICollectionViewLayout Unterklasse in Unterklasse umwandeln

Ich versuche, die Objective-C-Version der folgenden zu erreichen, der gut arbeitet:

LSSwipeToDeleteCollectionViewLayout ist eine Unterklasse von UICollectionViewFlowLayout und wird in Ziel C geschrieben

Objective C:

LSSwipeToDeleteCollectionViewLayout *layout = (LSSwipeToDeleteCollectionViewLayout *)self.collectionView.collectionViewLayout; 

Swift:

let layout : LSSwipeToDeleteCollectionViewLayout = (self.collectionView.collectionViewLayout as AnyObject) as! LSSwipeToDeleteCollectionViewLayout 
     layout.swipeToDeleteDelegate = self 

Wert des Typs 'UICollectionViewFlowLayout' (0x111edda00) konnte nicht in 'LSSwipeToDeleteCollectionViewLayout' (0x11040e3c0) umgewandelt werden.

Antwort

0

Normalerweise würden Sie gerade tun:

let layout = self.collectionView.collectionViewLayout as! LSSwipeToDeleteCollectionViewLayout

Sind Sie sicher, wenn Sie die Sammlung Ansicht initialisiert zunächst eine LSSwipeToDeleteCollectionViewLayout Instanz erstellt und es als das collectionViewLayout Argument in der UICollectionView.init(frame:collectionViewLayout:) Verfahren eingestellt?

+0

Hallo, was meinst du mit dem zweiten Teil deiner Antwort? –

+0

Wenn Sie eine Auflistungsansicht erstellen, müssen Sie die für das Layout verantwortliche Klasse festlegen, und es muss ein 'LSSwipeToDeleteCollectionViewLayout' sein oder Sie erhalten die Standardklasse 'UICollectionViewFlowLayout', was wahrscheinlich der Grund ist, warum Ihre Typumwandlung fehlschlägt. Sie legen die Layoutklasse entweder in Ihrer Schreibweise oder direkt im Code als Argument für den Initiator 'UICollectionView' fest, je nachdem, wie Sie die Sammlungsansicht erstellen. – par

Verwandte Themen