2013-07-16 3 views
23

Ich verwende eine UICollectionView und brauche eine globale Kopf- und Fußzeile zusammen mit Abschnittsüberschriften. Sowohl die globale Kopfzeile als auch die Fußzeile sollen mit dem Rest des Inhalts blättern. Im Grunde sollten sie genau wie die Eigenschaften tableHeaderView und tableFooterView von UITableView funktionieren.UICollectionView-Kopf- und Fußzeilenansicht

diagram

Von dem, was ich verstehe, ergänzende Ansichten entweder über oder unter einer bestimmten Abschnitt und Dekoration Ansichten sind funktionslos. Meine globale Kopf- und Fußzeile soll interaktive Elemente haben.

Ich ziehe mir wirklich die Haare aus, nachdem ich ein paar Stunden versucht habe. Ich habe ein paar scheußliche Methoden gefunden, wie z. B. mit contentInsets zu hacken und der Sammlungsansicht Unteransicht hinzuzufügen. Was ich wirklich suche, ist ein sauberer Weg, dies zu tun.

Ich freue mich auf jeden Hinweis!

+4

Dieser arme Kerl hier ist genau die gleiche Frage zu stellen, aber ohne Antwort: http://stackoverflow.com/questions/14515975/how -can-i-set-the-gesamte-header-view-to-uicollectionview? rq = 1 – paul

+0

möglich duplizieren von [wie ergänzende Ansicht float in UICollectionView als Abschnitt Header in UITableView plain style machen] (http: // stackoverflow .com/fragen/13511733/how-to-make-supplementa ry-view-float-in-uicollectionview-as-section-headers-do-i) – staticVoidMan

+0

Wenn Kopf- und Fußzeile behoben ist, dann können Sie es manuell oben und unten in Collectionview hoffe seine Hilfe hinzufügen. – Prabhat

Antwort

-2

dieser Fix in der cellForItemAtIndexPath Delegatmethode

- (UICollectionViewCell *)collectionView:(UICollectionView *)collectionView cellForItemAtIndexPath:(NSIndexPath *)indexPath { 
if (indexPath.section == 0) 
    { 
     // first section 
    } 
else if (indexPath.section == [dataSourceSectionsArray.count]-1) 
    { 
     // last section 
    } 
else 
    { 
     // normal section 
    } 
} 

Und Sie sollten natürlich return [dataSourceSectionsArray.count] 2 (ein Header, einer Fußzeile) in der numberOfRowsInSection Methode und halten Sie immer im Auge beziehen sich auf [dataSourceSectionsArray objectAtIndex: indexPath.row-1] wenn Sie auf Ihre Daten in einer normalen Zelle zugreifen, da kein Objekt dem Header im Array entspricht.

4

Sowohl Globale Kopf- und Fußzeile sind die Zellen (UICollectionViewCell) des ersten und letzten Abschnitts

+0

Dies ist eine akzeptable Antwort. Halten Sie es einfach, Sie müssen es nicht komplizierter machen – Ducky

4

Sie werden Ihre eigene Sammlung Ansicht Layout und Datenquelle haben erstellen. Die Datenquelle gibt globale Kopfzeilen und globale Fußzeilen sowie Abschnittsüberschriften und Fußzeilen zurück, und das Layout der benutzerdefinierten Auflistungsansicht muss diese entsprechend positionieren.

DIES IST NICHT EIN SEHR EINFACHER PROZESS.

In der WWDC-Diskussion Advanced User Interfaces mit Collection Views beschreiben sie ihren Ansatz mit Beispielcode, wie sie einen globalen Header erstellt haben. Sie können ihren Beispielcode verwenden und dann einen globalen Fußzeilenabschnitt hinzufügen.

Von Apple:

Advanced User Interfaces with Collection Views

Demonstrates code factoring, swipe to edit, drag reordering, and a sophisticated custom collection view layout.