Количество секций в табличном представлении не совпадает с тем, что я установил

Код очень прост, класс клиента, ChecklistViewController, унаследован от UITableViewController. Исходный код Swift подключен к tableViewController в раскадровке с ячейкой прототипа по умолчанию без изменений.

class ChecklistViewController: UITableViewController {

    override func numberOfSections(in tableView: UITableView) -> Int {
        return 10 // I set 10 sections here
    }

    override func viewDidAppear(_ animated: Bool) {
        let tableView = UITableView()
        print("\(tableView.numberOfSections)")// prints out "1" ???
    }

}

Проблема:

Я попросил функцию источника данных создать 10 разделов для табличного представления, а позже сказал, что табличное представление имеет только 1 раздел в функции viewDidAppear. Разве это не должно распечатать 10? почему 1?

Спасибо за ваше время и помощь

1 ответ

Решение

Вы без необходимости создаете новую пустую таблицу без источника данных или делегата. Затем вы спрашиваете у этой ненужной таблицы, сколько у нее разделов. Поскольку у него нет источника данных, он возвращает значение по умолчанию 1 раздела.

Вместо создания дополнительного табличного представления, обратитесь к правильному табличному представлению, созданному контроллером табличного представления.

+ Изменить viewDidAppear чтобы:

override func viewDidAppear(_ animated: Bool) {
    super.viewDidAppear(animated)

    print("\(self.tableView.numberOfSections)")
}

Теперь это получит доступ к реальному табличному представлению, которое создано контроллером табличного представления. Это должно дать правильный результат 10.

Обратите внимание, что self. на самом деле не нужно. Я положил это здесь, чтобы прояснить, какие tableView на него ссылаются.

Другие вопросы по тегам