当集合计数为 1 时,CollectionVIew 不渲染单元格

问题描述 投票:0回答:2

我面临着一个挑战,当集合计数为 1 时,我的 UICollectionView 不显示项目。更具体地说,它在调用 reloadSections 时短暂闪烁,或者在调用 reloadData 时根本不显示。 此集合视图作为 UITableViewCell 内的项目出现。

即使我没有使用 Xamarin,我在 Xamarin 板上找到的这篇文章几乎总结了我所经历的情况:https://forums.xamarin.com/discussion/35471/cells-from-custom-uicollectionviewcontroller-disappear -一秒后(1秒后,我的细胞消失了)

一切都非常基本:

func numberOfSectionsInCollectionView(collectionView: UICollectionView) -> Int {
         return 1
     }
     
     func collectionView(_ collectionView: UICollectionView, numberOfItemsInSection section: Int) -> Int {
        return self.members.count  
     }
    
    
       //Rendering the collection view cells
       func collectionView(_ collectionView: UICollectionView, cellForItemAt indexPath: IndexPath) -> UICollectionViewCell {

           let cell = collectionView.dequeueReusableCell(withReuseIdentifier: "cell", for: indexPath as IndexPath)
               let member: GroupMemberDto = members[indexPath.item]
               let contactInitials = cell.viewWithTag(1) as! UILabel
               let contactAvatar = cell.viewWithTag(2) as! UIImageView
               contactAvatar.image = UIImage(named: "anonymous")
               contactInitials.text = member.displayName
               contactAvatar.layer.cornerRadius = contactAvatar.frame.size.width / 2
               contactAvatar.clipsToBounds = true
               contactAvatar.contentMode = UIViewContentMode.scaleAspectFill
               contactAvatar.layer.borderWidth = 0.2
               contactAvatar.layer.borderColor = UIColor.black.cgColor
   

               UserService.getProfilePicture(userId: member.userId) {
                       response in
                       contactAvatar.image = response
               }
           

           return cell
       }

当我将它绑定到 10 个项目的集合时,它起作用了。但是,如果我进入“numberOfItemsInSection”并将其更改为返回“1”而不是“self.members.count”,它会短暂闪烁第一个成员,然后消失。

我确信这个问题与代码无关,而是与用户界面有关——我遇到了一些其他帖子,这些帖子间接提到事情不会被拉出来,或者可能会发生这些奇怪的错误,但是我无法拼凑出一个明确的答案.

任何人都可以指导我或就可能导致此问题的原因提供一些建议吗?

谢谢!!

swift uicollectionview uicollectionviewcell uistoryboard
2个回答
2
投票

好吧,我想出了这一点,希望它可以帮助别人。

我进入 UIStoryBoard 上的 collectionview 并将内容插入设置为 1(之前它们是 0),此外滚动指示器插入也设置为 1(它们都是 0)。

执行此操作后,该项目将渲染并保持渲染状态!


0
投票

我在这个问题上浪费了两个小时,并使用

解决了
collectionView.contentInset = .init(top: 1, left: 15, bottom: 1, right: 15)
    collectionView.scrollIndicatorInsets = .init(top: 1, left: 1, bottom: 1, right: 1)
© www.soinside.com 2019 - 2024. All rights reserved.