(Swift) Контроллер табличного представления. cellForRowAt не срабатывает - PullRequest
2 голосов
/ 18 апреля 2020

Проблема: tableView Controller не показывает элементы категории Array в таблице.

Диагностика:
- 1-й метод tableView numberOfSections запущен и возвращает 1 (print (categoryArray.count)
- 2-й метод tableView cellForRowAt никогда не запускается (оператор print не работает) )
- Контроллер табличного представления не нуждается в делегате. Однако я попытался добавить tableView.delegate = self
- перезапуск x-code не помог

Вопрос: Почему 2-й метод tableView не работает и как это исправить?

import UIKit
import CoreData

class CategoryViewController: UITableViewController {

    var categoryArray = [Category]()
    let context = (UIApplication.shared.delegate as! AppDelegate).persistentContainer.viewContext

    override func viewDidLoad() {
        super.viewDidLoad()
        loadCategories()
    }

    // MARK: - TableView DataSource Methods

    override func numberOfSections(in tableView: UITableView) -> Int {
        return categoryArray.count
    }

    override func tableView(_ tableView: UITableView, cellForRowAt indexPath: IndexPath) -> UITableViewCell {
        print("this should print")
        let cell = tableView.dequeueReusableCell(withIdentifier: "CategoryCell", for: indexPath) as! CategoryCell

        let category = categoryArray[indexPath.row]
        cell.categoryNameTextField.text = category.name

        return cell
    }

1 Ответ

1 голос
/ 18 апреля 2020
  1. Вместо numberOfSections агрегат numberOfRows

    override func tableView(_ tableView: UITableView, numberOfRowsInSection section: Int) -> Int {
        return categoryArray.count
    }
    
  2. В конце viewDidLoad перезагрузите представление таблицы

    override func viewDidLoad() {
        super.viewDidLoad()
        loadCategories()
        tableView.reloadData()
    }
    

    Если loadCategories() содержит что-то асинхронное, перезагрузите представление таблицы при загрузке данных.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...