【发布时间】:2020-11-16 15:11:14
【问题描述】:
当用户观看完广告后,我想从可见的收藏视图单元格中隐藏一个视图。所以在我的userDidEarn 委托方法中,我尝试更新我的可见单元格。 delgate 被完美触发但不知何故,它并没有隐藏我当前集合视图单元格上的视图。我在这里做错了什么?
提前致谢。
我的广告委托方法:
func rewardedAd(_ rewardedAd: GADRewardedAd, userDidEarn reward: GADAdReward) {
//Hide premiumHoverView from Cell
guard let indexPath = self.mainCollectionView.indexPathsForVisibleItems.first else {
return
}
let cell = self.mainCollectionView.cellForItem(at: indexPath) as! MainCollectionViewCell
// let cell = self.mainCollectionView.dequeueReusableCell(withReuseIdentifier: "MainCollectionViewCell", for: indexPath) as! MainCollectionViewCell
cell.premiumItemHoverView.isHidden = true
self.mainCollectionView.performBatchUpdates({
self.mainCollectionView.reloadItems(at: [indexPath])
}) { (isUpdated) in
}
}
isUpdated 总是返回 false。
我的收藏视图单元格:
class MainCollectionViewCell: UICollectionViewCell {
@IBOutlet weak var wallpaperImageView: UIImageView!
@IBOutlet weak var premiumItemHoverView: UIView!
@IBOutlet weak var gifImageView: UIImageView!
@IBOutlet weak var backgroundButton: UIButton!
@IBOutlet weak var watchVideoAdButton: UIButton!
func initializeCell(wallpaper: Wallpapers) {
CustomLoader.instance.showLoaderView()
if wallpaper.isPremimumItem == true {
premiumItemHoverView.isHidden = false
gifImageView.image = UIImage.gifImageWithName("addGif1")
} else {
premiumItemHoverView.isHidden = true
gifImageView.image = nil
}
let imageUrl = CommonService.shared.getDeviceRatioWiseImageUrl(wallpaper: wallpaper)
wallpaperImageView.image = nil
wallpaperImageView.loadImageUsingCache(forURLString: imageUrl, withPlaceholderImageName: "") { (success) in
if success {
DispatchQueue.main.async {
CustomLoader.instance.hideLoaderView()
}
}
}
}
}
【问题讨论】:
-
self.mainCollectionView.indexPathsForVisibleItems.first并不总是会给你想要的 indexPath -
@RobertCrabtree 感谢您的评论。但它总是给我正确的索引。我打印了值,看起来还可以。如果没有,那还有什么选择?
标签: ios swift uicollectionview uicollectionviewcell uicollectionviewflowlayout