2016-07-20 25 views
4

Ich habe eine Sammlungsansicht mit einigen Zellen. In meinen Zellen habe ich ein Label, um eine Liste von Ländernamen anzuzeigen. Und bei jedem Klick auf die einzelnen Zellbeschriftungen werde ich einige Daten in der Tabellenansicht unter meiner Sammlungsansicht anzeigen.Wie ändert man die Label-Farbe in der Sammlungsansicht Zelle durch Klick

Wenn ich ein beliebiges Zellenetikett drücke, muss ich den Text dieses Etiketts rot machen. Und andere Markennamen sollten schwarz sein.

Wie geht das? Ich habe den folgenden Code ausprobiert, aber wenn ich einen Markennamen in dieser Zelle anwähle, werden alle Zellenbeschriftungen rot.

Wie behebe ich das?

func collectionView(collectionView: UICollectionView, didSelectItemAtIndexPath indexPath: NSIndexPath) { 


     if let cell = collectionView1.cellForItemAtIndexPath(indexPath) { 

      var label = cell.viewWithTag(100) as? UILabel 


      label!.textColor = UIColor.redColor() 

     } 
    } 

Antwort

2

Ihr Etikett wird nicht aktualisiert, da Sie die Zellen aktualisieren müssen. So beste Lösung, ich könnte Sie anbieten - Ihre Etikettenfarbe in Ihrer Klasse benutzerdefinierte Zelle in setSelected Methode ändern

Edit:


override var setSelected(selected: bool) { 
    if (selected) { 
     self.youLabel!.textColor = UIColor.redColor() 
    } else { 
     self.youLabel!.textColor = UIColor.blackColor() 
} 

Dies ist beispielsweise die Funktion in der benutzerdefinierten Klasse. Entschuldigung, wenn es Fehler gibt - beantwortet von iPhone

+0

: Ich bin zu iOS.Can geben Sie mir einige Codebeispiel .Das was soll ich in meiner benutzerdefinierten Zellklasse zu tun haben – mack

+0

Ok. Das ist ziemlich einfach. –

+0

Ja, ich bekomme einen Fehler unter 'bool' in dieser Zeile' func setSelected (selected: bool) ' – mack

-1

ich mit Ihrem Code erstellt, es funktioniert mir. aber ich denke, es ist besser, mit benutzerdefinierten collectionview Zelle zu erstellen.

demo project

+0

Das gleiche, was geschrieben haben in meiner Frage Postleitzahl wissen.Wie das nur Ihre Lösung ist auch da.Aber was ich brauche, ist, wenn ich jemals ein Etikett drücken muss es zu rot.Und wenn ich anderes Etikett auswählen, sollte das vorhandene ausgewählte Etikett zu schwarz colour.Means, dass nur die ausgewählte Zelle nur eine rote Farbe haben. – mack

+0

func collectionView (collectionView: UICollectionView, didDeselectItemAtIndexPath indexPfad: NSIndexPath) { let cell = collectionView.cellForItemAtIndexPath (indexPath) label = Zelle! .viewWithTag (100) als? UILabel label? .textColor = UIColor.blackColor() } –

+0

Also denke ich, dass Sie Label-Farbe in CollectionView zurückdrehen müssen. Hoffe, diesem zu helfen. :) –

Verwandte Themen