Ich habe programmgesteuert eine TableView mit Abschnitten in Swift erstellt. Die Anzahl der Abschnitte und Zeilen wird immer gleich sein, da sie nur Informationen anzeigen, die ich aus Firebase abrufe.Zelle TextLabel nach oben links programmgesteuert in swift
Ich möchte den TextLabel einer der Zellen an der Spitze ausrichten, anstatt der Mitte der Zelle. Alle anderen TextLabels möchte ich zentriert bleiben. Die betreffende Zelle ist Abschnitt 1, Zeile 1.
Es sieht derzeit wie:
Ich habe lange gesucht, wie dies für eine Weile zu tun, und eine Menge Leute sagen, do:
cell.textLabel?.numberOfLines = 0
cell.textLabel?.sizeToFit()
Aber das funktioniert nicht. Ich lege diesen Code in meine cellForRowAtIndexPath
Methode.
if indexPath.section == 0 {
if indexPath.row == 0 {
cell.textLabel!.text = "Our review"
} else {
cell.textLabel!.text = film?.Main_Review
cell.textLabel?.numberOfLines = 0 // HERE
cell.textLabel?.sizeToFit() // HERE
}
}
Nichts passiert, der Text ist immer noch auf das Zentrum der Zelle ausgerichtet.
Kennt jemand eine einfache Möglichkeit, dies zu tun? Vorzugsweise ohne eine benutzerdefinierte Zelle erstellen zu müssen (da dies nur 1 Zeile benötigt)? Dank
UPDATE - All Code für cellForRowAtIndexPath
override func tableView(tableView: UITableView, cellForRowAtIndexPath indexPath: NSIndexPath) -> UITableViewCell {
let cell: UITableViewCell = UITableViewCell(style: .Value1, reuseIdentifier: cellId)
cell.selectionStyle = .None
cell.textLabel?.font = UIFont(name: "Verdana", size: 14)
cell.textLabel?.textColor = UIColor.darkGrayColor()
cell.detailTextLabel?.font = UIFont(name: "Verdana", size: 14)
if indexPath.section == 0 {
if indexPath.row == 0 {
cell.textLabel!.text = "Share"
}
} else if indexPath.section == 1 {
if indexPath.row == 0 {
cell.textLabel!.text = "Our review"
} else {
cell.textLabel!.text = film?.Main_Review
cell.textLabel?.numberOfLines = 0
cell.textLabel?.sizeToFit()
}
} else if indexPath.section == 2 {
if indexPath.row == 0 {
cell.textLabel!.text = "UK release date"
cell.detailTextLabel!.text = film?.Date_Released?.capitalizedString
} else if indexPath.row == 1 {
cell.textLabel!.text = "Directed by"
cell.detailTextLabel!.text = film?.Directed_By?.capitalizedString
} else if indexPath.row == 2 {
cell.textLabel!.text = "Running time"
cell.detailTextLabel!.text = film?.Running_Time
} else {
cell.textLabel!.text = "Certificate rating"
cell.detailTextLabel!.text = film?.Certificate_Rating
}
}
return cell
}
Können Sie bitte verwenden sagen wie diese Bedingung jemals zum Erfolg führt 'if indexPath.section == 0 {if i ndexPath.section == 1 {', wie es möglich ist –
@NDoc Vielen Dank! Das war mein Fehler - jetzt aktualisiert. – Nick89
schreibe alle 'cellForRowAtIndexPath' – Vyacheslav