表格视图中的节数不等于我设置的
Posted
技术标签:
【中文标题】表格视图中的节数不等于我设置的【英文标题】:The number of sections in the table view is not equal to what I set 【发布时间】:2017-06-18 14:32:26 【问题描述】:代码很简单,客户类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?
感谢您的时间和帮助
【问题讨论】:
let tableView = UITableView()
,这是一个全新的对象(因为你有UITableViewController
,你已经有一个UITableView
,并且numberOfSections(in tableView:)
在reloadData()
$之前还没有被调用过
@Larme 我把viewDidAppear里面的代码改成了print(self.numberOfSections(in: self.tableView)),问题就解决了
【参考方案1】:
您不必要地创建了一个没有数据源或委托的新空表。然后你会问那个不必要的表它有多少部分。由于它没有数据源,所以它返回默认的 1 节。
不要创建额外的表视图,而是引用由表视图控制器创建的正确表视图。
将viewDidAppear
更改为:
override func viewDidAppear(_ animated: Bool)
super.viewDidAppear(animated)
print("\(self.tableView.numberOfSections)")
现在这将访问由表视图控制器创建的真实表视图。这应该给出 10 的正确结果。
请注意,self.
实际上并不需要。我把它放在这里只是为了明确引用哪个tableView
。
【讨论】:
以上是关于表格视图中的节数不等于我设置的的主要内容,如果未能解决你的问题,请参考以下文章