Ich habe eine UICollectionView, die Abschnittsüberschriften, aber keine Abschnittsfußzeilen hat. Daher habe ich keine definierte Fußzeilenansicht.
Apples Dokumentation gibt an, dass You must not return nil from this method.
Für mich persönlich, wenn Sie UICollectionView nicht gesagt haben, dass es Sektionssets anzeigt, wird es nicht angezeigt. Also ist es in Ordnung, preconditionFailure
in diese Delegate-Methode zu setzen.
Mein Gedanke dahinter ist, dass UICollectionView nicht mehr tun wird, was Sie ihm sagen. Wenn Sie also UICollectionView nicht mitgeteilt haben, dass Abschnittssets angezeigt werden sollen, werden sie nicht angezeigt, und es ist sicher, dass preconditionFailure
für diese Fußzeilenszenen verwendet wird. Aber wenn Sie in diesem Fall einen Absturz finden, dann ist es entweder UIKit Bug, dem Sie ein Radar einreichen sollten, um es Apple zu sagen, oder es ist Ihr Fehler, UICollectionView zu bitten, Sektionsfuß unbeabsichtigt anzuzeigen.
Also würde mein Code ähnlich aussehen
%Vor% Keines der oben genannten Dinge funktionierte für mich. In meinem Fall habe ich zwei UICollectionView
Objekte im selben View-Controller. Die erste ist horizontal und wählt ein Element aus, von dem die untere UICollectionView
angezeigt wird, die vertikal ist und Abschnittsüberschriften enthält.
Von Apple-Dokumentation :
Diese Methode muss immer ein gültiges View-Objekt zurückgeben. Wenn Sie in einem bestimmten Fall keine ergänzende Ansicht wünschen, sollte Ihr Layoutobjekt die Attribute für diese Ansicht nicht erstellen. Alternativ können Sie Ansichten ausblenden, indem Sie die Eigenschaft isHidden der entsprechenden Attribute auf true setzen oder die Eigenschaft alpha der Attribute auf 0 setzen. Zum Ausblenden von Kopf- und Fußzeilenansichten in einem Flusslayout können Sie auch die Breite und Höhe dieser Ansichten festlegen zu 0.
so die headerView
wie gewohnt aus der Warteschlange entfernen, wenn Sie dies nicht tun und nur eine Instanz von% co_de zurückgeben.% Xcode wird sich beschweren, dass die Header-Ansicht nicht entfernt wird. Und wenn Sie es aus irgendeinem Grund nicht anzeigen möchten (für mich, bis der Benutzer ein Element aus der oberen horizontalen Sammlungsansicht auswählt), legen Sie die Breite und Höhe von UICollectionReusableView()
auf headerView
fest und geben Sie es zurück.
Wie Sie sehen können, gibt die Methode viewForSupplementaryElementOfKind UICollectionReusableView zurück und ist kein optionaler Typ . Daher müssen Sie das UICollectionReusableView-Objekt initialisieren und dieses Objekt zurückgeben als Beispiel unten, wenn Sie nichts zurückgeben möchten.
%Vor%Tags und Links ios uicollectionview swift