代码非常简单,客户类 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?
感谢您的时间和帮助
答案 0 :(得分:1)
您不必要地创建一个没有数据源或委托的新的空表。然后你问那个不必要的表有多少个部分。由于它没有数据源,因此返回默认的1节。
不是创建额外的表视图,而是引用由表视图控制器创建的正确的表视图。
将viewDidAppear
更改为:
override func viewDidAppear(_ animated: Bool) {
super.viewDidAppear(animated)
print("\(self.tableView.numberOfSections)")
}
现在,这将访问由表视图控制器创建的实际表视图。这应该给出10的正确结果。
请注意,self.
实际上并不需要。我把它放在这里只是为了明确哪个tableView
被引用。