2016-01-04 4 views
1

Я делаю iAds в своем приложении для загрузки в делегат приложения. Он загружается нормально, но в контроллерах просмотра он не будет отображаться. Мой код в приложение делегата объявить объявление является var UIiAd: ADBannerView = ADBannerView() Мой код в контроллере представления являетсяShared iAd banner

class HelpViewController: UIViewController, ADBannerViewDelegate { 
    //MARK: - Properties 
    var UIiAd: ADBannerView = ADBannerView() 
    //MARK: - did something 
    override func viewDidLoad() { 
     super.viewDidLoad() 


     // Do any additional setup after loading the view. 
    } 

    override func viewWillAppear(animated: Bool) { 
     //super.viewWillAppear(animated) 
     let ScreenHeight = UIScreen.mainScreen().bounds.height 

     UIiAd.delegate = self 
     UIiAd = self.appDelegate().UIiAd 
     UIiAd.frame = CGRectMake(0, ScreenHeight - 50, 0, 0) 
     UIiAd.hidden = true 
     self.view.addSubview(UIiAd) 
    } 

    override func viewWillDisappear(animated: Bool) { 
     UIiAd.delegate = nil 
     UIiAd.removeFromSuperview() 
    } 



    override func didReceiveMemoryWarning() { 
     super.didReceiveMemoryWarning() 
     // Dispose of any resources that can be recreated. 
    } 
    //MARK: - iAd 
    func bannerViewDidLoadAd(banner: ADBannerView!) { 
     UIView.beginAnimations(nil, context: nil) 
     UIView.setAnimationDuration(1) 
     UIiAd.hidden = false 
     UIView.commitAnimations() 
     print("Did load ad") 
    } 

    func bannerView(banner: ADBannerView!, didFailToReceiveAdWithError error: NSError!) { 
     UIView.beginAnimations(nil, context: nil) 
     UIView.setAnimationDuration(0) 
     UIiAd.hidden = true 
     UIView.commitAnimations() 
     print("Did fail to receive ad with error \(error)") 
    } 

    //MARK: - Functions 
    func appDelegate() -> AppDelegate { 
     return UIApplication.sharedApplication().delegate as! AppDelegate 
    } 
} 

Что, кажется, проблема в том, bannerViewDidLoadAd не всегда дозвонились. Как я могу отобразить баннер, если он загрузится?

+0

Обратитесь к этому ответу: [Shared ОВР баннер] (HTTP: // StackOverflow .com/а/28639200/2108547). То, что вы разместили, не является общим баннером iAd. –

ответ

0

Я действительно исправил это. Что вам нужно сделать, в приложении делегат class AppDelegate: UIResponder, UIApplicationDelegate, ADBannerViewDelegate Затем вы хотите, чтобы сделать логическое значение, которое изменяет, если объявление загружается Затем вы хотите добавить функцию func bannerViewDidLoadAd(banner: ADBannerView!) { adLoaded = true } Это изменит значение при загрузке объявления Затем в ваш контроллер представления вы хотите сделать

override func viewWillAppear(animated: Bool) { 
    //super.viewWillAppear(animated) 
    let ScreenHeight = UIScreen.mainScreen().bounds.height 

    UIiAd.delegate = self 
    UIiAd = self.appDelegate().UIiAd 
    UIiAd.frame = CGRectMake(0, ScreenHeight - 50, 0, 0) 
    canDisplayBannerAds = true 
    if appDelegate().adLoaded == true { 
    self.view.addSubview(UIiAd) 
    } 
} 

Это добавит объявление в свой контроллер представления не будет, если объявление не загружено

+0

Это неправильно. 'canDisplayBannerAds = true' на самом деле создает совершенно новый' 'ADBannerView', и вы не должны статически настраивать' .frame'. –

Смежные вопросы