hoe lijst items toe te voegen in tabelweergave in swift 5

stemmen
0

Ik ben op zoek naar items naar een tabelweergave toe te voegen. Ik kan dat telkens als ik klik op de knop een nieuwe rij inserts in de tabel te zien, maar de cel leeg is. Toen ik de code debuggen kan ik alle items in de lijst te zien, maar ik kan niet zien ze weergegeven op de app zelf. De items 1, 2 en 3 worden niet weergegeven ook

@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)
}

Dus de insert werkt wel, maar ik kan het gewoon niet de tekst in de tabel. Ik krijg een nieuwe cel voor elk item dat ik toe te voegen, maar het is gewoon witte lege ruimte, in plaats van de waarde die ik net toegevoegd

BEWERK:

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
    }
De vraag is gesteld op 02/12/2019 om 23:56
bron van user
In andere talen...                            


3 antwoorden

stemmen
0

Heb je geprobeerd met behulp van tableView.reloadData()? Ook moet je niet dwingen uitpakken itemLabel.text.

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

       tableView.reloadData()
    }
}

Zorg ervoor dat u ook toevoegen tableView.reloadData()aan het einde van viewDidLoad().

antwoordde op 03/12/2019 om 00:16
bron van user

stemmen
1

Het beste is om de tafel te herladen wanneer uw gegevensbron veranderingen, die je kunt doen als dit:

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

func insertItem(){
    if let text = itemLbl.text { 
        items.append(itemLbl.text)
    }
}
antwoordde op 03/12/2019 om 00:54
bron van user

stemmen
0

Er zijn meerdere mogelijkheden die dit probleem kunnen veroorzaken. Het eerste wat je moet controleren is dat in uw lijst, zorg ervoor dat u gebruik maakt van een hergebruik id voor het prototype cel en dat u verwijst het. Bovendien, zorg ervoor dat u de tafel te herladen wanneer je een element (niet constant doen als het de batterij van de gebruiker zal drain) toe te voegen. Als geen van deze werken, is het mogelijk dat je niet je outlets goed aan te sluiten.

antwoordde op 03/12/2019 om 02:24
bron van user

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