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

4
我正在寻求在我的应用程序中实现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传递到另一个VC?任何帮助都将不胜感激。谢谢!

1
您IP地址为143.198.54.68,由于运营成本限制,当前对于免费用户的使用频率限制为每个IP每72小时10次对话,如需解除限制,请点击左下角设置图标按钮(手机用户先点击左上角菜单按钮)。 - Matteo Piombo
1个回答

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


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接