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

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

【讨论】:

以上是关于表格视图中的节数不等于我设置的的主要内容,如果未能解决你的问题,请参考以下文章

无效更新:无效的节数

IOS表视图中的节数动态

CoreData NSFetchRequest 返回结果,但对象的节数返回 0

UICollection 崩溃无效更新:无效的部分数。

如何从collectionview重新加载部分

NSInternalInconsistencyException 表格视图中的节号错误?