如果显示原生广告(xib),如何在收藏夹视图中滚动以更正项目

时间:2020-03-09 01:08:51

标签: ios swift uicollectionview admob uicollectionviewcell

我的应用程序使用Google Admob / Firebase

我想滚动到收藏夹视图中的正确项目。在我使用Google Admob实施广告之前,一切工作正常。现在,当我在集合视图中选择一个项目时,如果它在4之后的任何项目(这是我开始展示广告之前显示的内容数量),则不会滚动到该项目,而是滚动到一个广告,而不是选中的项目项目。

如果我在前4个(在广告开始展示之前)选择了一个项目,它会将我滚动到正确的项目。

这里是我的完整代码

个人资料视图控制器(选择了一个项目后,推动用户查看详细显示该项目的视图,并在设置视图时将其滚动到所选项目)

我尝试添加一行,减去显示的广告数量即可将我带到正确的项目,但仍然没有运气

   func collectionView(_ collectionView: UICollectionView, didSelectItemAt indexPath: IndexPath) {
        
        let singlePostVC = (storyboard!.instantiateViewController(withIdentifier: "SinglePostVC") as? SinglePostVC)!
        
        // number of Ad cell that has shown up until current row
        let numberOfAdsShownSoFar = indexPath.item / (singlePostVC.numOfContentBeforeAds + 1)
                
        // minus the number of Ads shown
        let selectedIndex = indexPath.item - numberOfAdsShownSoFar
        
        singlePostVC.selectedIndex = selectedIndex
        singlePostVC.userProfileController = self
        singlePostVC.posts = posts
        singlePostVC.navigationItem.title = "\(user?.username ?? "")"
        navigationController?.pushViewController(singlePostVC, animated: true)
    }

SinglePostVC

此视图在用户在上一个视图控制器中选择一个项目后显示。设置视图后,用户将转到所选项目。


var selectedIndex = Int()
      
 // Google ADMob

// show four content feed before Ad show on the fifth row
        let numOfContentBeforeAds = 4
           
        // the total possible number of ads to show
        var totalNumberOfAdsToShow = 0
        var hasScrolledToItem = false

        override func viewDidLayoutSubviews() {
        super.viewDidLayoutSubviews()
            
            let indexPath = IndexPath(item: selectedIndex, section: 0)
          
            // only scroll to the item if it haven't been scrolled before
            if(!hasScrolledToItem){
                hasScrolledToItem = true
                postsCollectionView.scrollToItem(at: indexPath, at:.top , animated: false)
            }
                    }

编辑-经过更多考虑之后。我相信我只需要避免显示广告(这是一个集合视图单元xib),直到选中的项目也从那里滚动出来,然后开始广告计数。仍然是一个问题,如何实现呢?

0 个答案:

没有答案