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