Как прокрутить, чтобы исправить элемент в представлении коллекции, если показываются нативные объявления (xib) - PullRequest
0 голосов
/ 09 марта 2020

Мое приложение использует Google Admob / Firebase

Я хочу прокрутить, чтобы исправить элемент в представлении коллекции. Все работало нормально, пока я не реализовал рекламу с Google Admob. Теперь, когда я выбираю элемент в представлении коллекции, если какой-либо элемент после 4 (то есть количество контента, которое я показываю до начала показа рекламы), я не прокручиваю до этого элемента, я прокручиваюсь до объявления вместо выбранного item.

Если я выбираю элемент в первые 4 (до начала показа рекламы), он прокручивает меня до нужного элемента.

Вот мой полный код

Контроллер вида профиля (Когда элемент выбран, pu sh пользователь, чтобы просмотреть, который отображает этот элемент подробно, и прокрутить их до выбранного элемента при настройке вида)

Я попытался добавить строка, которая минус количество показанных объявлений, которые приведут меня к нужному товару, но все равно не повезло

   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)
    }

SinglePostV C

Этот вид отображается после Пользователь выбирает элемент в предыдущем контроллере представления. Как только вид установлен, пользователь попадает к выбранному элементу.


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 ячейки представления коллекции), пока выбранный элемент тоже не будет прокручен и оттуда, а затем запустить счетчик объявлений. Все еще напрашивается вопрос, как этого добиться?

...