【发布时间】:2020-11-09 06:43:58
【问题描述】:
我面临的挑战是,当集合计数为 1 时,我的 UICollectionView 不显示项目。更具体地说,它在调用 reloadSections 时会短暂闪烁,或者在调用 reloadData 时根本不显示。 这个collectionview作为一个项目存在于UITableViewCell中。
尽管我没有使用 Xamarin,但我在 Xamarin 板上找到的这篇文章几乎总结了我的经历:https://forums.xamarin.com/discussion/35471/cells-from-custom-uicollectionviewcontroller-disappear-after-a-second(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”,它会短暂闪烁第一个成员,然后就消失了。
我确信这个问题与代码无关,而是与 UI 相关 - 我遇到了一些其他帖子,其中切线提到的事情不会引出,或者可能会出现这些奇怪的错误,但是我无法拼凑出一个确定的答案。
任何人都可以指导我或提供一些可能导致此问题的建议吗?
谢谢!!
【问题讨论】:
-
闪烁消失的究竟是什么?
-
单元格 - 我将背景设置为粉红色只是为了查看,单个单元格显示为粉红色框,然后在大约 1/2 秒后消失。我还将 CollectionView 背景设置为橙色,并且永远保持不变,所以我知道 CollectionView 本身并没有消失
-
所以问问自己:1/2 秒后会发生什么?这可能是您未在此处显示的内容,或者可能是您的行
contactAvatar.image = response,这可能会在大约 1/2 秒后发生,嗯。这是更新单元格中的图像的不好方法......无论如何,尝试注释掉该行,看看它是否解决了问题。如果问题仍然存在,原因是您没有向我们展示代码。 -
要考虑的一点是为什么它会暂时显示以重新加载部分 (0) 但如果我只是完全指定 reloadData,它永远不会加载?
-
@matt 我明白了 - 这是指标插图!不敢相信。感谢您通过提问使我走上了正确的轨道(您让我想到了 1/2 秒后发生了什么 ui 重绘)
标签: swift uicollectionview uicollectionviewcell uistoryboard