当reloadData异步执行时,UITableView的numberOfSections未被调用

时间:2017-01-18 19:11:05

标签: swift uitableview asynchronous

所以我UITableViewUIViewController相关联(包括delegatedatasource)。

@IBOutlet weak var chatTableView: UITableView!

当我尝试从网络服务异步获取某些数据后调用chatTableView.reloadData()时,它会调用cellForRowAtIndexPath但不会同时调用numberOfSectionsnumberOfRowsInSection。当我尝试从@IBAction(不是异步)调用它时,两个方法都执行得很好。

我尝试使用reloadData()DispatchQueue.main.async来调用OperationQueue.main.addOperation,但没有成功。

ChatRepository.list {
    log, error in
    // bunch of code
    self.log = log
    self.isInputHidden = true
    DispatchQueue.main.async {
        // This won't call numberOfSections and numberOfRowsInSections
        self.chatTableView.reloadData()
    }   
}

@IBAction func back(_ sender: Any?) {
    // This will call the complete flow of methods
    chatTableView.reloadData()
}
func numberOfSections(in tableView: UITableView) -> Int {
    let sections = log.count + (isInputHidden ? 1 : 2)
    return sections
}

关于为什么两种方法都没有被调用的任何想法?

0 个答案:

没有答案