collectionView.cellForItem(at:indexPath)无法正常工作

Posted

技术标签:

【中文标题】collectionView.cellForItem(at:indexPath)无法正常工作【英文标题】:collectionView.cellForItem(at: indexPath) not working properly 【发布时间】:2017-03-05 07:54:15 【问题描述】:

我读过我的 collectionViewController 是 UICollectionViewDelegateFlowLayout 的代表, 我已经正确注册了我的手机,collectionView?.register(ActivityCell.self, forCellWithReuseIdentifier: cellId), 我已经正确地对单元格进行了队列化并返回了它

override func collectionView(_ collectionView: UICollectionView, cellForItemAt indexPath: IndexPath) -> UICollectionViewCell 
        let cell: ActivityCell = collectionView.dequeueReusableCell(withReuseIdentifier: cellId, for: indexPath) as! ActivityCell

        return cell
    

但每当我尝试使用 sizeForItemAtIndexPath 函数中的 indexPath 检索单元格时,它不会返回活动单元格

func collectionView(_ collectionView: UICollectionView, layout collectionViewLayout: UICollectionViewLayout, sizeForItemAt indexPath: IndexPath) -> CGSize 
        if let cell: ActivityCell = self.collectionView?.cellForItem(at: indexPath) as? ActivityCell
        
            let approximatewidthofcell = view.frame.size.width - 50
            let size = CGSize(width: approximatewidthofcell, height: 1000)
            let attributes = [NSFontAttributeName: UIFont.systemFont(ofSize: 15)]

            let estimatedframe = NSString(string: cell.activitylabel.text!).boundingRect(with: size, options: .usesLineFragmentOrigin, attributes: attributes, context: nil)
            return CGSize(width: view.frame.size.width, height: estimatedframe.height)
        
        else
         
            return CGSize(width: view.frame.size.width, height: 200)
        

    

If 块总是被忽略,而 else 块每次都被执行,我不知道接下来要操作什么代码,请帮助

【问题讨论】:

【参考方案1】:

我有一段时间没有看集合视图,但我认为这是一个顺序的事情,这个方法在 cellForItem 之前被调用。另外,您是否分配了数据源?

【讨论】:

我有一个 collectionViewController,据我所知,silentbob 不需要为 collectionVC 分配数据源,而简单视图控制器需要一个数据源 idk 什么被遗漏了 嗨,很抱歉没有回复,忙碌的一周...为什么不使用 collectionView 参数而不是 self.collectionView ?

以上是关于collectionView.cellForItem(at:indexPath)无法正常工作的主要内容,如果未能解决你的问题,请参考以下文章