我希望在我的应用中实施iAd。到目前为止,我已经设法让他们使用下面的每个视图正确显示/解雇。
App Delegate:
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传递到另一个VC?
任何帮助将不胜感激。 谢谢!
答案 0 :(得分:0)
在行
self.appDelegate.adBannerView = ADBannerView(frame: CGRect.zeroRect)
您正在创建一个新的ADBannerView实例并丢弃旧实例。所以你不是共享视图对象,只是共享变量。 删除此行。完成此操作后,
self.appDelegate.adBannerView.delegate = nil
没有任何意义,因为您稍后将其设置为self
。也删除它。
另见https://developer.apple.com/library/ios/technotes/tn2286/_index.html