2015-05-15 52 views
1

iAD委託從不調用,儘管我將它設置在viewWillAppear中。bannerViewDidLoadAd不叫

中的AppDelegate

var UIiAd: ADBannerView = ADBannerView() 

在視圖控制器

var UIiAd: ADBannerView = ADBannerView() 

func appdelegate() -> AppDelegate { 
    return UIApplication.sharedApplication().delegate as! AppDelegate 
} 

override func viewWillAppear(animated: Bool) { 
    var SH = UIScreen.mainScreen().bounds.height 

    UIiAd.delegate = self 
    UIiAd = self.appdelegate().UIiAd 
    UIiAd.frame = CGRectMake(0, SH - 50, 0, 0) 
    self.view.addSubview(UIiAd) 
} 

func bannerViewDidLoadAd(banner: ADBannerView!) { 
    UIView.beginAnimations(nil, context: nil) 
    UIView.setAnimationDuration(10) 
    UIiAd.alpha = 0.5 
    println("hello") 
    UIView.commitAnimations() 
} 

有趣認爲adBanner實際顯示的測試廣告。

UDP:我明白了什麼是錯的。要顯示iAd,您只需要設置self.canDisplayBannerAds = true即可。但是您無權訪問創建的禁止代表。

回答

2

看來,你實例化一個UIiAd爲您的應用程序委託,的財產和其他UIiAd爲您的viewController的屬性。 然後:

UIiAd.delegate = self // The viewController's instance gets the delegate assigned 
UIiAd = self.appdelegate().UIiAd // The viewController's instance changes and becomes the same as the app delegate's instance 

這不是我用來對付iAd的方式,但在你的情況下,它可能足夠改變兩行代碼的順序:

UIiAd = self.appdelegate().UIiAd 
UIiAd.delegate = self 

希望這有助於

+0

是的!謝謝,它確實有效。我試過另一種方式 var bannerView:ADBannerView? 覆蓋FUNC viewDidLoad中(){ super.viewDidLoad() self.canDisplayBannerAds =真 self.bannerView .delegate =自 self.bannerView .hidden =真 ?} FUNC bannerViewDidLoadAd(橫幅:ADBannerView){ bannerView?.hidden =假 的println( 「大旗被載入」) } 但它並沒有按照本教程工作 –

+0

http://ashishkakkad.com/2014/10/how-to-add-iad -advertise-banner-view-in-your-application-swift-language-ios-8-xcode-6-gm-tutorial/ –

+0

您可能還對Swift早期版本感興趣我的。這是關於您可以放置​​在視圖頂部或底部的iAd單身人士。 [iAdExample](https://github.com/perlfly/iAdExample) –