wie auf Listenelemente in der Tabellenansicht in swift 5 hinzufügen

stimmen
0

Ich versuche, Gegenstände zu einer Tabellenansicht hinzuzufügen. Ich kann diese jedes Mal sehe ich eine neue Zeile Einfügungen in der Tabelle auf die Schaltfläche klicken, aber die Zelle leer ist. Wenn ich den Code debuggen kann ich alle Elemente in der Liste sehen, aber ich kann sie auf der App selbst nicht sehen angezeigt. Die Positionen „1“, „2“ und „3“ sind nicht so gut angezeigt

@IBOutlet weak var itemLbl: UITextField!
    var items: [String] = [1, 2, 3]

override func viewDidLoad() {
        super.viewDidLoad()
        tableView.tableFooterView = UIView(frame: CGRect.zero)


    }

func insertItem(){
    items.append(itemLbl.text!)

    let indexPath = IndexPath(row: items.count - 1,section: 0 )
    tableView.beginUpdates()
    tableView.insertRows(at: [indexPath], with: .automatic)
    tableView.endUpdates()
    itemLbl.text = 
    view.endEditing(true)
}

So ist der Einsatz funktioniert, aber ich kann einfach nicht den Text in der Tabelle anzuzeigen. Ich für jeden Artikel eine neue Zelle bekommen, dass ich hinzufügen, aber es ist nur weißen leeren Raum, anstelle des Wertes, dass ich gerade hinzugefügt

BEARBEITEN:

func tableView(_ tableView: UITableView, cellForRowAt indexPath: IndexPath) -> UITableViewCell {
        let itemLbl  =  items[indexPath.row]
        let cell = tableView.dequeueReusableCell(withIdentifier: ItemCell) as! ItemCell

        cell.itemLbl.text = itemLbl
        return cell
    }
Veröffentlicht am 02/12/2019 um 23:56
quelle vom benutzer
In anderen Sprachen...                            


3 antworten

stimmen
0

Haben Sie versucht , mit tableView.reloadData()? Auch nicht zwingen auspacken itemLabel.text.

func insertItem(){
    if let itemText = itemLabel.text {
       items.append(itemText)

       tableView.reloadData()
    }
}

Stellen Sie sicher , auch hinzufügen , tableView.reloadData()am Ende viewDidLoad().

Beantwortet am 03/12/2019 um 00:16
quelle vom benutzer

stimmen
1

Es ist am besten, die Tabelle neu zu laden, wenn die Datenquelle ändert, die Sie wie folgt tun:

var items: [String] = ["1", "2", "3"] {
    didSet {
        tableView.reloadData()
    }
}

func insertItem(){
    if let text = itemLbl.text { 
        items.append(itemLbl.text)
    }
}
Beantwortet am 03/12/2019 um 00:54
quelle vom benutzer

stimmen
0

Es gibt mehrere Möglichkeiten, die dieses Problem verursachen könnten. Das erste, was Sie überprüfen sollten, ist, dass in der Liste, stellen Sie sicher, dass Sie eine Wiederverwendung Kennung für die Zelle Prototyp verwenden und dass Sie es verweisen. Darüber hinaus stellen Sie sicher, dass neu zu laden Sie die Tabelle, wenn Sie ein Element hinzufügen (nicht ständig es tun, wie es die Batterie des Benutzers ablaufen wird). Wenn beides nicht arbeiten, dann ist es möglich, dass Sie nicht Ihre Steckdosen richtig anschließen.

Beantwortet am 03/12/2019 um 02:24
quelle vom benutzer

Cookies help us deliver our services. By using our services, you agree to our use of cookies. Learn more