如何使用AppDelegate在视图之间共享iAd横幅

我期待在我的应用程序中实现iAd。 到目前为止,我已经设法让他们正确显示/解雇在每个视图使用下面。

应用程序代表:

import UIKit import iAd @UIApplicationMain class AppDelegate: UIResponder, UIApplicationDelegate { var window: UIWindow? var adBannerView = ADBannerView() 

视图控制器1:

 import UIKit import iAd class HomeScreenViewController: UIViewController, UITableViewDelegate, UITableViewDataSource, ADBannerViewDelegate { let appDelegate = UIApplication.sharedApplication().delegate as AppDelegate //Creates reference to the AppDelegate override func viewDidLoad() { super.viewDidLoad() loadAds() } func loadAds(){ self.appDelegate.adBannerView.removeFromSuperview() self.appDelegate.adBannerView.delegate = nil self.appDelegate.adBannerView = ADBannerView(frame: CGRect.zeroRect) self.appDelegate.adBannerView.center = CGPoint(x: view.bounds.size.width / 2, y: view.bounds.size.height - self.appDelegate.adBannerView.frame.size.height / 2) self.appDelegate.adBannerView.delegate = self self.appDelegate.adBannerView.hidden = true view.addSubview(self.appDelegate.adBannerView) } func bannerViewDidLoadAd(banner: ADBannerView!) { println("bannerViewDidLoadAd") self.appDelegate.adBannerView.hidden = false } func bannerViewActionDidFinish(banner: ADBannerView!) { println("bannerViewActionDidFinish") } func bannerView(banner: ADBannerView!, didFailToReceiveAdWithError error: NSError!) { println("didFailToReceiveAdWithError") self.appDelegate.adBannerView.hidden = true } 

我的目标是在多个视图中显示相同的广告,以供用户在其中切换。 不过,在实践中,当你从一个视图转向另一个视图时,广告停止加载,必须重新开始。 有一个更简单的方法将这个adBannerView从一个VC传递到另一个?

任何帮助,将不胜感激。 谢谢!

一致

 self.appDelegate.adBannerView = ADBannerView(frame: CGRect.zeroRect) 

您正在创build一个新的ADBannerView实例并丢弃旧实例。 所以你不分享视图对象,只是variables。 删除这一行。 完成这个之后,

 self.appDelegate.adBannerView.delegate = nil 

没有任何意义,因为你稍后将其设置为self 。 也删除它。

另见https://developer.apple.com/library/ios/technotes/tn2286/_index.html