2017-04-02 3 views
5

Ich habe eine benutzerdefinierte UITableViewCell genannt CCLineupTableViewCell die wie folgt aussieht:Swift 3: UILabel zeigt nicht in benutzerdefinierten UITableViewCell

@IBOutlet weak var artistNameLabel: UILabel! 
@IBOutlet weak var artistValuationLabel: UILabel! 

override func awakeFromNib() { 
    super.awakeFromNib() 
    // Initialization code 

} 

override func setSelected(_ selected: Bool, animated: Bool) { 
    super.setSelected(selected, animated: animated) 

    // Configure the view for the selected state 
} 

ich Zugriff auf die Zelle in der cellForRowAt indexPath: IndexPath Methode wie folgt:

let cell = tableView.dequeueReusableCell(withIdentifier: "HomeCell", for: indexPath) as! CCLineupTableViewCell 

Meine benutzerdefinierte Zellenaufbau ist wie folgt:

enter image description here

enter image description here

Wie Sie sehen können, ist es direkt im IB und im Code eingerichtet. Das komische daran ist, dass das erste Label, artistNameLabel, über cellForRowAt indexPath: IndexPath erreichbar ist und perfekt funktioniert. Die artistValuationLabel wird jedoch trotz Standardtext über das Storyboard nie angezeigt.

Edit:

Ich habe ein Bild von den Zwängen der Spitze hinzugefügt. Es ist an der rechten Seite, oben und unten der Zelle verankert (sowie das Seitenverhältnis).

enter image description here

+1

Haben Sie 'UITableViewCell'constraints überprüft, wird die Bezeichnung möglicherweise nicht angezeigt, da Fehlerbedingungen vorliegen. –

+0

@ Santiagocarmonagonzález Constraints sind gut, aber ich werde sie veröffentlichen. –

+0

versuchen Sie, einen höheren Wert als das 'artistNameLabel' in der' Horizontal'-Eigenschaft auf ** content zu setzen. Komprimierungswiderstandspriorität ** Oder ein Konstantenrandbreitenwert. –

Antwort

3

Ihr Fehler ist ein Fehler, auf die Einschränkungen, die Sie festgelegt haben.

Fügen Sie eine Breitenbeschränkung hinzu, um sicherzustellen, dass artistValuationLabel Platz zum Anzeigen hat.

+0

Wer weiß, warum das passiert? Das 'ansjectsFontSizeToFitWidth' Attribut wird auf' true' gesetzt. Hoffentlich wird dies behoben, da das 'aspectRatio' korrekt gesetzt wurde (wie alle anderen Nebenbedingungen). Ich konnte nicht wissen, was los war, wenn ich diese Frage nicht stellte. –

+0

Das kann passieren, weil die Breite Priorität des 'artistNameLabel' höher als' artistValuationLabel' ist. Wenn der Name also sehr lang ist, wird das Feld "reserviert" für das andere Label verwendet. Wenn Sie eine bestimmte Breite auf 'artistValuationLabel' setzen, hat diese eine Priorität von 1000, daher ist dieser Bereich immer reserviert. –

+0

Aber die Etiketten überschneiden sich nicht, ich habe sie seitdem geändert, so dass es eine Einschränkung gibt, die dies verhindert. Ich nahm die Breite heraus, um zu sehen, ob es funktionieren würde, aber es war immer noch nicht so, also musste ich es zurückstellen. –

0

Aufgrund der falschen Breitenbeschränkung ist das passiert. Entweder Sie müssen eine proportionale Breite hinzufügen oder Sie sollten in dem Gerät laufen, für das Sie entworfen haben.

+0

Sie können auch eine linke Einschränkung angeben. –

Verwandte Themen