table 视图中的部分数与我设置的不相等

The number of sections in the table view is not equal to what I set

代码很简单,客户class、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" ???
    }

}

问题:

我要求数据源函数为 table 视图创建 10 个部分,而后来,它告诉我 table 视图在 viewDidAppear 中只有 1 个部分 函数。不是应该打印出 10 吗?为什么1?

感谢您的宝贵时间和帮助

您正在不必要地创建一个没有数据源或委托的新的空 table。然后你问那个不必要的 table 它有多少部分。由于它没有数据源,因此 returns 默认为 1 个部分。

不要创建额外的 table 视图,而是引用由 table 视图控制器创建的正确 table 视图。

viewDidAppear更改为:

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

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

现在这将访问由 table 视图控制器创建的真实 table 视图。这应该给出正确的结果 10.

请注意 self. 实际上并不需要。我把它放在这里只是为了清楚地表明正在引用哪个 tableView