comment ajouter des éléments de la liste en vue de table rapide 5

voix
0

Je suis en train d'ajouter des éléments à une vue de tableau. Je peux voir que chaque fois que je clique sur le bouton une nouvelle insère des lignes dans la table, mais la cellule est vide. Quand je déboguer le code que je peux voir tous les éléments de la liste, mais je ne vois pas les afficher sur l'application elle-même. Les éléments « 1 », « 2 » et « 3 » ne sont pas affichés aussi bien

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

Ainsi, l'insert fonctionne, mais je ne peux pas afficher le texte dans le tableau. Je reçois une nouvelle cellule pour chaque élément que j'ajouter, mais son tout blanc espace vide, au lieu de la valeur que je viens d'ajouter

MODIFIER:

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
    }
Créé 02/12/2019 à 23:56
source utilisateur
Dans d'autres langues...                            


3 réponses

voix
0

Avez - vous essayé d' utiliser tableView.reloadData()? En outre, ne pas forcer le dépliage itemLabel.text.

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

       tableView.reloadData()
    }
}

Assurez - vous d'ajouter également tableView.reloadData()à la fin viewDidLoad().

Créé 03/12/2019 à 00:16
source utilisateur

voix
1

Il est préférable de recharger la table chaque fois que votre source de données change, que vous pouvez faire comme ceci:

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

func insertItem(){
    if let text = itemLbl.text { 
        items.append(itemLbl.text)
    }
}
Créé 03/12/2019 à 00:54
source utilisateur

voix
0

Il existe de multiples possibilités qui pourraient causer ce problème. La première chose que vous devriez vérifier est que dans votre liste, assurez-vous que vous utilisez un identifiant de réutilisation pour le prototype de cellule et que vous y faisant référence. De plus, assurez-vous de recharger la table à chaque fois que vous ajoutez un élément (ne font pas toujours comme il videra la batterie de l'utilisateur). Si aucune de ces travaillent, il est possible que vous n'avez pas connecté correctement vos points de vente.

Créé 03/12/2019 à 02:24
source utilisateur

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