2016-06-29 5 views
1

Ich kann nicht scheinen, dass dies für mich funktioniert und ich habe keine anderen Antworten auf ähnliche Fragen gefunden, die funktionieren.Wie wählt man ALLE UICollectionView Zellen wie in der iOS Photos App mit Swift?

Ich arbeite mit Swift und muss wissen, wie man einen "Select All" Button in meiner App wählen kann alle sichtbaren & nicht sichtbaren Zellen wie die Stock Photos App auf iOS.

Meine App beschäftigt sich auch mit Fotos, und so hat jede Zelle zwei UIImageViews, eines ist das fragliche Foto, und ein anderes ist ein verstecktes UIImageView, das bei der Auswahl eines Bildes erscheint (es ist nur ein Häkchen) .

Der Code Ich habe mit (was nicht funktioniert), ist dies:

 for cell in self.collectionView.visibleCells() as! [ImageCell]{ 
     if cell.checkMark.hidden{ 
      cell.checkMark.hidden = false 
     } 
     else{ 
      cell.checkMark.hidden = true 
     } 
    } 

Antwort

3

Ich finde es gut, wie die Steuerung funktioniert, zu verstehen. UICollectionView und UITableView beide erstellen und zeigen nur genügend Zellen, um auf den Bildschirm zu passen (und vielleicht ein paar mehr für Scroll-Puffer). Dies ist erforderlich, um den Fall zu behandeln, in dem eine App eine große Anzahl von Daten haben kann. Wenn ein Benutzer beispielsweise über 1000 Fotos verfügt, wäre die Leistung schlecht, wenn 1000 tatsächlich auf dem Bildschirm angezeigt würden.

Das gesagt, sollten Sie Auswahl durch Modelle behandeln. Es gibt viele Möglichkeiten, dies zu tun, aber eine Möglichkeit ist:

Lassen Sie jede Zelle durch ein benutzerdefiniertes Objekt dargestellt werden, das mindestens eine photo und isSelected als eine Eigenschaft hat. Jedes Mal, wenn der Benutzer die Zelle auswählt oder die Auswahl aufheben, aktualisieren Sie einfach die isSelected-Eigenschaft. Zeigen Sie in collectionView:cellForItemAtIndexPath: das Häkchen basierend auf der isSelected-Eigenschaft an. Wählen Sie alle aus, indem Sie einfach das Array durchlaufen und diese eine Eigenschaft aktualisieren. Rufen Sie dann reloadData auf, um es für jede Zelle zu aktualisieren.

Da Sie das Array aktualisiert haben und das UICollectionView auf dem Array basiert, wird jede Zelle so ausgewählt, wie sie auf dem Bildschirm angezeigt wird.

+0

Vielen Dank! Das funktioniert. – iOShepherd

Verwandte Themen