Was gibt es von collectionView (_: viewForSupplementaryElementOfKind: at :), wenn Sie nichts zurückgeben wollen?

8

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.

%Vor%     
GoldenJoe 30.06.2017, 09:23
quelle

7 Antworten

3

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%     
quelle
3

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.

%Vor%     
Ahmed Khedr 27.01.2018 04:33
quelle
0

Versuchen Sie es wie folgt

%Vor%     
KKRocks 30.06.2017 09:27
quelle
-1

Sie können eine leere Ansicht zurückgeben, denke ich. Es wird keine Größe angegeben.

%Vor%     
Myrenkar 30.06.2017 09:26
quelle
-1

In der viewForSupplementaryElementOfKind-Methode müssen Sie das Objekt UICollectionReusableView zurückgeben. Es ist kein optionales Objekt. Es wird also nil nicht akzeptiert.

Gib einfach etwas zurück, wenn du Standard

willst %Vor%     
DS Itachi 30.06.2017 09:30
quelle
-1

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%     
Dhaval Mistry 30.06.2017 10:15
quelle
-3

Versuchen Sie es mit

%Vor%     
Abhijit 30.06.2017 09:32
quelle

Tags und Links