2016-06-28 6 views
1

enter image description hereSwift UICollectionView cellForItemAtIndexPath falsch eingestellte Zelleninhalt

enter image description here

Ich möchte den Knopf versteckt machen nur, wenn der Titel entspricht dem 'str' Variable.

Ich kann nicht mehr Fotos hinzufügen, aber es macht das gleiche für "7:00", "12:00", "17:00", "22:00" Werte. Will nur für "2:00" und Vergleich dafür machen.

Ist dies ein Fehler (collectionView) cellForItemAtIndexPath oder irgendetwas anderes? Ich bin so verwirrt. Bitte helfen ..

+0

zeigen Sie einfach, was Sie ausprobiert haben –

+0

Es gibt zwei Bilder, die meinen Code-Block und Ausgabe zeigen. Ich möchte horizontale Kollektionsansicht machen, indem ich nur den Knopf drehe, um 24hours wie "01:00", "02:00", ".." anzuzeigen. Aber möchten einige der Tasten anders als die anderen einstellen. Es wird Verbergen-Taste oder andere titleColor sein. In diesem Beispiel, ich versuche, die Taste zu verstecken, die "02:00" Titel –

+0

hat. Aber einige andere Tasten sind auch ändern, die "7:00", "12:00", "17:00" Titel hat. Und wenn ich die horizontale Sammlungansicht nach links oder rechts verschiebe, wird jedes Mal eine andere Schaltfläche gesetzt. Das ist seltsam, oder? –

Antwort

1

Wenn Sie einen Bildlauf durchführen, wird die Zelle erneut verwendet, sodass Sie auf der Grundlage der Bedingung verborgene wahre falsche Werte festlegen. Ich denke, das ist dein Problem.

+0

Es funktioniert. Danke, Alter. –

+0

@Erkam Bitte akzeptieren Sie meine Antwort :) –

1

Es gibt keinen Fehler in cellForItemAtIndexPath, Sie, dass die label der Zelle versteckt. So versteckt es nur das Etikett nicht die Zelle zu entfernen. Wenn Sie nur den Wert anzeigen möchten, der ungleich 2:00 ist, müssen Sie ein zusätzliches Array dafür erstellen und es den Methoden CollectionViewDelegate geben. Erstellen Sie ein globales Array und funktionieren Sie so.

var array: [Int] = [Int]() 
fun populateData() { 
    for i in oldArray { 
     if i != 2 { 
      self.array.append(i) 
     } 
    } 
    collectionView.reloadData() 
} 

Jetzt dieses array Objekt in CollectionViewDelegate Methoden wie diese

func collectionView(collectionView: UICollectionView, numberOfItemsInSection section: Int) -> Int { 
    return self.array.count 
} 

func collectionView(collectionView: UICollectionView, cellForItemAtIndexPath indexPath: NSIndexPath) -> UICollectionViewCell { 
    let hour = array[indexPath.row] 
    cell.hourBtn.setTitle("\(hour):00", forState: .Normal) 
    //Now there is no need to write code for hiding button 
} 

Hope this Ihnen helfen.

+0

Es funktioniert, aber was kann ich tun, wenn ich diesen Knopf zeigen möchte, aber nur seine Farbe anders als die anderen einstellen möchte? Wenn ich versuche, seine Farbe anders einzustellen und zu versuchen, die horizontale collectionview right2left oder left2right zu bewegen, ständig aktualisieren Knöpfe Farbe und jedes Mal verschiebt unterschiedliche Taste und nicht, dass ich will. –

+0

Versteh nicht was du versuchst zu sagen. Kurz erklären. Welche Knopffarbe möchtest du ändern? –

+0

Vielen Dank für Ihr Interesse @Nirav, es ist gelöst :) –