表视图中的节数不等于我设置的节数

时间:2017-06-18 14:32:27

标签: ios swift tableview viewdidappear

代码非常简单,客户类 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个部分,稍后,它告诉表视图在 viewDidAppear 函数中只有1个部分。是不是应该打印10?为什么1?

感谢您的时间和帮助

1 个答案:

答案 0 :(得分:1)

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

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

viewDidAppear更改为:

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

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

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

请注意,self.实际上并不需要。我把它放在这里只是为了明确哪个tableView被引用。