Jak dodać elementy listy w widoku tabeli w szybkich 5

głosy
0

Próbuję dodać elementy do widoku tabeli. Widzę, że za każdym razem, kliknij na przycisk nowy wkładki wiersz do tabeli, ale komórka jest pusta. Kiedy debugowania kodu widzę wszystkie pozycje na liście, ale nie mogę ich zobaczyć wyświetlane na samej aplikacji. Pozycje „1”, „2” i „3” nie są wyświetlane, a także

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

Więc wkładka działa, ale po prostu nie może wyświetlać tekst w tabeli. I nie dostać nową komórkę dla każdego elementu, który dodaję, ale jej po prostu biały pusta przestrzeń, zamiast wartości dodanej, że po prostu

EDYTOWAĆ:

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
    }
Utwórz 02/12/2019 o 23:56
źródło użytkownik
W innych językach...                            


3 odpowiedzi

głosy
0

Czy próbowałeś użyciu tableView.reloadData()? Ponadto, nie zmuszaj unwrap itemLabel.text.

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

       tableView.reloadData()
    }
}

Upewnij się również dodać tableView.reloadData()na końcu viewDidLoad().

Odpowiedział 03/12/2019 o 00:16
źródło użytkownik

głosy
1

Najlepiej, aby przeładować tabelę gdy źródło danych zmienia się, co można zrobić tak:

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

func insertItem(){
    if let text = itemLbl.text { 
        items.append(itemLbl.text)
    }
}
Odpowiedział 03/12/2019 o 00:54
źródło użytkownik

głosy
0

Istnieje wiele możliwości, które mogłyby spowodować ten problem. Pierwszą rzeczą, którą należy sprawdzić jest to, że w liście, upewnij się, że używasz identyfikatora ponownego wykorzystania dla prototypu komórek i że jesteś przedstawieniu go. Ponadto, upewnij się przeładować tabeli po dodaniu elementu (nie stale zrobić to jak będzie drenażu baterii przez użytkownika). Jeśli żadna z nich nie pracuje, to możliwe, że nie połączyć swoje wyloty prawidłowo.

Odpowiedział 03/12/2019 o 02:24
źródło użytkownik

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