重新加载 UITableView 有 UITableViewCell 可见性问题

Posted

技术标签:

【中文标题】重新加载 UITableView 有 UITableViewCell 可见性问题【英文标题】:Reload UITableView has UITableViewCell visibility issue 【发布时间】:2016-04-28 12:36:45 【问题描述】:

我有一个两行的 UITableView。第一行有 UITextField,第二行有 UICollectionView。在重新加载 UITableView 时,UICollectionViewCell 的单元格不会出现。但是在滚动 UITableView 时,UICollectionView 的所有单元格都变得可见。我可能做错了什么。

    if indexPath.row == 0 
        let cellIdentifier = "NewPostCell"
        var cell = tableView.dequeueReusableCellWithIdentifier(cellIdentifier) as? NewPostCell
        if (cell == nil) 
            cell = Utils.getCellForGivenIdentifier(cellIdentifier, cellIdentifier: cellIdentifier, ownerT: self) as? NewPostCell
        
        cell?.txtPost.delegate = self

        cell?.txtPost.text = userThoughts


        newPostCell = cell
        return cell!
     else 

        let cellIdentifier = "ASAttachmentCell"
        var cell = tableView.dequeueReusableCellWithIdentifier(cellIdentifier) as? ASAttachmentCell
        if (cell == nil) 
            cell = Utils.getCellForGivenIdentifier(cellIdentifier, cellIdentifier: cellIdentifier, ownerT: self) as? ASAttachmentCell
        

        if let height = cell?.collectionAttachment?.contentSize.height
        
            cell?.cntCollectionHeight.constant = height
        

        attachmentCell = cell
        return cell!
    




    func tableView(tableView: UITableView, willDisplayCell cell: UITableViewCell, forRowAtIndexPath indexPath: NSIndexPath) 
         if indexPath.row == 1 
             attachmentCell = cell as? ASAttachmentCell
             attachmentCell?.attachmentCollection(self)
            
   

【问题讨论】:

在设备模拟器和真实设备中发生同样的事情? 是的,它同时发生在设备和模拟器上 你能放一些关于cellforrowattheindexpath和collectionView数据源的代码吗? 【参考方案1】:

尝试将您的代码放入您设置集合视图数据源的部分:

collectionView.reloadData()

【讨论】:

【参考方案2】:

这很可能是因为您在后台线程上调用tableView.reloadData()。因此,当您真正开始滚动时,UI 将在主线程上更新,一切看起来都正常。尝试在主线程上调用重载。

dispatch_async(dispatch_get_main_queue())
    self.tableView.reloadData()

【讨论】:

以上是关于重新加载 UITableView 有 UITableViewCell 可见性问题的主要内容,如果未能解决你的问题,请参考以下文章

重新加载 UITableView 而不重新加载标题部分

重新加载 UITableView 数据而不重新加载视图?

UITableView 不重新加载部分和内容

基于 SegmentedControl 有条件地重新加载 UITableView

在 UIView 中重新加载 UITableView

UITableView 重新加载时闪烁