Передача данных с помощью метода промежуточного делегирования 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 вы все равно будете иметь доступ к тому, каким будет новый заголовок.

Другие вопросы по тегам