尝试将iAd用作班级

时间:2015-07-20 16:15:31

标签: ios methods delegates iad viewcontroller

我正在实施iAds,我已经遵循了很多教程,但找不到任何我认为以聪明的方式做到的事情。 我有多个视图控制器,我想在其上显示广告,所以我创建了一个广告类,我的.m文件如下所示:

#import "AdBanner.h"
#import "AppDelegate.h"

@implementation AdBanner


- (AppDelegate*)appdelegate {
    return (AppDelegate *)[[UIApplication sharedApplication] delegate];
}


//in view will appear
-(void)initializeBottomADinView:(UIView*)view{
    _UIiAD = [[self appdelegate]UIiAD];
    _UIiAD.delegate = self;
    [_UIiAD setFrame:CGRectMake(0,view.frame.size.height-50,320,50)];
    [view addSubview:_UIiAD];

}

//in viewWillDisappear
-(void)removeAd{
    _UIiAD.delegate=nil;
    _UIiAD=nil;
    [_UIiAD removeFromSuperview];
}

- (void)bannerViewDidLoadAd:(ADBannerView *)banner{
    NSLog(@"successfully loaded ad");
    [UIView beginAnimations:@"animateAdBannerOff" context:NULL];

    _UIiAD.alpha = 1;
    [UIView commitAnimations];
}






- (void)bannerView:(ADBannerView *)banner didFailToReceiveAdWithError:(NSError *)error
{
//remove ad
    NSLog(@"failed to load ad");
    [UIView beginAnimations:@"animateAdBannerOff" context:NULL];
    _UIiAD.alpha = 0;
    [UIView commitAnimations];
     [_UIiAD removeFromSuperview];
}

所以在每个视图控制器中我想要广告,我只需要调用方法“initializeBottomAdInView:self.view”。 这样我就不必一次又一次地复制代表。

问题是委托方法“bannerViewDidLoadAd”和“bannerViewDidFail”似乎只加载一次。因此,一旦广告未加载,横幅就会被隐藏,因为即使横幅被加载,代表也不会再次运行,它不会再显示出来。

如果有人将广告作为一种方法使用得很好,而不是在每个视图控制器中添加相同的代码,那么分享它就太棒了。

谢谢,

0 个答案:

没有答案