如何使用 AppDelegate 在视图之间共享 iAd 横幅
Posted
技术标签:
【中文标题】如何使用 AppDelegate 在视图之间共享 iAd 横幅【英文标题】:How to share iAd banner between views using AppDelegate 【发布时间】:2015-03-06 17:48:04 【问题描述】:我希望在我的应用中实施 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 传递到另一个?
任何帮助将不胜感激。 谢谢!
【问题讨论】:
您可能对this 示例感兴趣。在这里,我将 iAD 设为全局,根本不涉及 AppDelegate。 【参考方案1】:排队
self.appDelegate.adBannerView = ADBannerView(frame: CGRect.zeroRect)
您正在创建一个新的 ADBannerView 实例并丢弃旧的实例。所以你没有共享视图对象,只是变量。 删除此行。完成此操作后,
self.appDelegate.adBannerView.delegate = nil
没有任何意义,因为您稍后将其设置为self
。也删除它。
另见https://developer.apple.com/library/ios/technotes/tn2286/_index.html
【讨论】:
以上是关于如何使用 AppDelegate 在视图之间共享 iAd 横幅的主要内容,如果未能解决你的问题,请参考以下文章
如何在 AppDelegate 和 ViewController 之间共享属性,并在 App 终止前保存
在 appdelegate 和视图控制器中访问的同一数据库之间的一致性