我读过使我的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块每次都会执行,我不知道接下来要处理什么代码,请帮忙
最佳答案
我有一段时间没有看集合视图,但是我认为这是有序的,在cellForItem之前调用此方法。另外,您是否分配了数据源?
关于ios - collectionView.cellForItem(at:indexPath)无法正常工作,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/42605896/