Передача данных с помощью метода промежуточного делегирования Google AdMob
У меня есть приложение, которое имеет четыре кнопки, которые все передают данные в контроллер модального представления. Это достигается путем назначения тегов для 4 кнопок и добавления некоторых условий в prepareForSegue
override func prepareForSegue(segue: UIStoryboardSegue, sender: AnyObject?) {
if segue.identifier == "modalSegue" {
let secondViewController = segue.destinationViewController as! ModalViewController
if sender?.tag == 1 {
secondViewController.title = "Lawn Mowing"
}
else if sender?.tag == 2 {
secondViewController.title = "Landscaping"
}
else if sender?.tag == 3 {
secondViewController.title = "Hardscaping"
}
else if sender?.tag == 4 {
secondViewController.title = "Tree Removal"
}
}
}
Вот моя кнопка:
@IBAction func servicesButton(sender: UIButton) {
adCounter += 1
if adCounter == 4 {
adCounter = 0
if (interstitial.isReady) {
interstitial.presentFromRootViewController(self)
interstitial = createAd()
}
else {
self.performSegueWithIdentifier("modalSegue", sender: sender)
}
}
else {
self.performSegueWithIdentifier("modalSegue", sender: sender)
}
}
Работает отлично.
Проблема возникает, когда я представляю AdMob Interstitials
Каждое 4-е нажатие кнопки (на кнопке services) я вызываю Interstitial. Когда вставка закрыта (через interstitialDidDismissScreen), я выполняю переход к контроллеру модального представления:
func interstitialDidDismissScreen(ad: GADInterstitial!) {
self.performSegueWithIdentifier("modalSegue", sender: nil)
}
Но данные не передаются! :( Модал просто загружается без заголовка secondViewController. Я полагаю, это потому, что нет отправителя, который дает теги кнопки и передает данные... Правильно? Я также пробовал sender: self в методе промежуточного делегата, но это ничего не делать.
Как я могу продолжать передавать эту информацию контроллеру модального представления после того, как пользователь отклоняет вставку? Или есть лучший способ справиться с этим? Мне НУЖНО внедренное, чтобы загрузить до перехода, так как вероятность случайных нажатий будет намного меньше.
Благодарю. Если вам нужны дополнительные разъяснения или вопросы, пожалуйста, дайте мне знать.
1 ответ
Одним из решений было бы очистить ваш счет в IBAction, когда вы представляете вставку, и затем, когда вставка отклоняется, вы можете вызвать функцию servicesButton с кнопкой, которая была нажата в качестве отправителя, если у вас есть IBOutlets для них.
func interstitialDidDismissScreen(ad: GADInterstitial!) {
self.servicesButton(buttonThatWasPressed)
}
Это напомнит всю вашу логику.
Другим способом было бы установить переменную уровня класса для заголовка нового представления и установить, что при нажатии кнопки, независимо от того, откуда вы вызываете presentSegue, в prepareForSegue вы все равно будете иметь доступ к тому, каким будет новый заголовок.