2017-02-05 2 views
1

Ich mache etwas zu dumm, um selbst zu sehen, also hoffentlich hilft ein Peer-Review.Text nicht in UILabel (oder UITextField) in einer UICollectionViewCell gesetzt

Ich habe die einfachste UICollectionViewController-Setup. Ich habe eine benutzerdefinierte UIViewControllerCell, die ein UILabel enthält.

Die Daten zum Auffüllen des UICollectionViewControllers sind nur ein statisches Array.

Wenn ich die App ausführen, wird der UICollectionViewController angezeigt, zeigt aber nur den Standard-Beschriftungstext z. 'Etikette'.

Also ich denke, die Mehrheit des Codes ist richtig, es ist nur, dass ich den Text in der UILabel nicht einstellen kann.

Sein etwas sehr offensichtlich, ich bin sicher, aber ich kann einfach nicht sehen es

Hier einige der Code ist

override func collectionView(_ collectionView: UICollectionView, cellForItemAt indexPath: IndexPath) -> UICollectionViewCell { 

     let cell = collectionView.dequeueReusableCell(withReuseIdentifier: reuseIdentifier, for: indexPath) as! WrappedCollectionViewCell 

     // Configure the cell 
     var myLabel = UILabel() 
     cell.brandText = myLabel 
     var labelString:String = brandList[indexPath.row] 
     cell.brandText.text = labelString 

     return cell 
    } 

die alle Daten korrekt sind ich den richtigen Text sehen kann und die korrekter Indexpfad. Aber wenn ich in Xcode am Ende der Methode debuggen sehe ich es immer noch zeigt der Text als "Label"

Hier ist meine benutzerdefinierte UICollectionViewController. Alles, was ich getan habe, war die Steckdose.

import UIKit 

class WrappedCollectionViewCell: UICollectionViewCell { 

    // Previously wrong because this was set to be a UITextField 
    @IBOutlet weak var brandText: UILabel! 
} 

Also bitte helfen, ich habe Stunden damit verbracht, es macht mich verrückt!

Antwort

2

Sie deklarieren neues Objekt der UILabel keine Notwendigkeit für diese 2 Zeilen (Sie haben einen Fehler gemacht beacuse kennst du Textfeld nicht in der Zelle Klasse beschriften):

var myLabel = UILabel() 
cell.brandText = myLabel 

Zuerst richtigen UI-Komponente verbinden, müssen Ihre Zelle (@IBOutlet weak var brandText: UILabel) und dann einfach den Text Ihres Etiketts in der Zelle wie folgt festgelegt:

override func collectionView(_ collectionView: UICollectionView, cellForItemAt indexPath: IndexPath) -> UICollectionViewCell { 

    let cell = collectionView.dequeueReusableCell(withReuseIdentifier: reuseIdentifier, for: indexPath) as! WrappedCollectionViewCell 

    // Configure the cell 

    var labelString:String = brandList[indexPath.row] 
    cell.brandText.text = labelString 

    return cell 
} 

und Sie sollten gut zu gehen!

+0

Cheers K. Michal Das UITextField war nur ein Fehler in der Frage. Ich habe es seitdem behoben. Das Problem war, wie du sagst, mir ein neues UILabel zuzuweisen. Vielen Dank – rideintothesun

Verwandte Themen