Ich versuche, eine Stapelansicht in einer Tabellenansicht Zelle programmatisch zu implementieren und fügen Sie Etiketten und Tasten, um es wie so:Stapelansicht in einer Tabellenansicht Zelle
func tableView(_ tableView: UITableView, cellForRowAt indexPath: IndexPath) -> UITableViewCell {
let cell = tableView.dequeueReusableCell(withIdentifier: "Cell", for: indexPath)
let dict = self.char[indexPath.row]
let stackView = UIStackView()
stackView.translatesAutoresizingMaskIntoConstraints = false
stackView.axis = .horizontal
stackView.spacing = 20
stackView.distribution = .fillProportionally
stackView.alignment = .leading
cell.addSubview(stackView)
NSLayoutConstraint.activate([
stackView.leadingAnchor.constraint(equalTo: cell.leadingAnchor),
stackView.trailingAnchor.constraint(equalTo: cell.trailingAnchor)
])
let bornLabel = UILabel()
bornLabel.textColor = UIColor.blue
let bornLabelValue = UILabel()
bornLabelValue.textColor = UIColor.blue
stackView.addArrangedSubview(bornLabel)
stackView.addArrangedSubview(bornLabelValue)
for (key, value) in dict {
bornLabel.text = key
bornLabelValue.text = value
if key == "Height" {
let button = UIButton(type: .roundedRect)
button.setTitle("English", for: .normal)
button.setTitleColor(.blue, for: .normal)
stackView.addArrangedSubview(button)
}
}
return cell
}
Das Problem ist, dass jedes Mal, tableView.reloadData()
genannt wird Je nach den Daten, die der TabelleView übergeben werden, wird für jede Beschriftung eine weitere Zelle über der vorhandenen Zelle mit unterschiedlichen Werten hinzugefügt. Oder es erzeugt nicht jedes Mal eine andere Zelle, sondern fügt einfach eine weitere Stapelansicht hinzu. Ich bin mir nicht sicher. Wie kann ich das beheben?
Dank
Ihre Antwort führte mich an den richtigen Ort, danke. Ich löste es, indem ich tatsächlich eine Prototypzelle verwendete, eine Stapelansicht hinzufügte und diese Stapelansicht in 'cellForRowAt indexPath:' konfigurierte. Ich hatte das schon mal probiert und meine Labels und Buttons auch in 'cellForRowAt indexPath:' instanziiert und nicht in meiner benutzerdefinierten Cell-Klasse, die jetzt einwandfrei funktioniert. Vielen Dank! – user2747220