ADBannerView混乱(iOS 8)

ADBannerView混乱(iOS 8),ios,objective-c,iad,adbannerview,Ios,Objective C,Iad,Adbannerview,我已经搜索了,搜索了,搜索了,搜索了关于如何做到这一点的澄清,但我仍然不知道如何正确地做到这一点 我的困境和我想要的结果: 我的故事板中添加了一个ADBannerView,实现它的变量名是bannerView。我正在做一个选项来禁用游戏中的广告。如果广告被禁用,那么广告甚至不应该加载。如果我是正确的,则不应调用代理的bannerViewWillLoadWithAd:方法,也不应调用bannerviewidloadad:方法。我使用包含在“if”语句中的此代码从视图控制器中删除ADBannerVi

我已经搜索了,搜索了,搜索了,搜索了关于如何做到这一点的澄清,但我仍然不知道如何正确地做到这一点

我的困境和我想要的结果:

我的故事板中添加了一个
ADBannerView
,实现它的变量名是
bannerView
。我正在做一个选项来禁用游戏中的广告。如果广告被禁用,那么广告甚至不应该加载。如果我是正确的,则不应调用代理的
bannerViewWillLoadWithAd:
方法,也不应调用
bannerviewidloadad:
方法。我使用包含在“if”语句中的此代码从视图控制器中删除
ADBannerView

[bannerView removeFromSuperview];
[self setCanDisplayBannerAds:NO];
然后我的委托方法如下所示(我的委托是我的游戏场景,视图控制器由所述场景的属性引用
viewController1
):


代码是有效的,但我最终在日志中发现了错误和奇怪的事情,通常包括在应该显示广告时“服务会话终止”,以及在不应该显示广告时加载广告。知道如何解决这个问题吗?

首先,除了创建自己的
ADBannerView
之外,您还使用了
[self-setCanDisplayBannerAds:YES]
。你需要使用其中一个
[self-setCanDisplayBannerAds:YES]
实际上是在为您创建一个
ADBannerView
之外,还为您创建了一个

要删除广告,你不应该等到广告加载后再处理隐藏广告的问题。您应该在应用程序启动时检查一次,然后处理它。如果您决定使用
setCanDisplayBannerAds
它非常简单:

-(void)viewDidLoad {
    [super viewDidLoad];
    if (disableAds) {
        self.canDisplayBannerAds = NO;
    }
}
如果您决定使用自己实现的
ADBannerView
您的代码可能更像这样:

-(void)viewDidLoad {
    [super viewDidLoad];
    if (disableAds) {
        banner.hidden = YES;
        banner.delegate = nil;
    }
}

我从未将
candisplaybanerads
设置为
YES
。但是,我可以将设置为
candisplaybanerads
的位置删除为
NO
。抱歉@DDPWNAGE,我假设您正在设置
candisplaybanerads
,正如您显示的那样,您正在将其设置为
NO
。如果未将其设置为
YES
,则无需将其设置为
no
。只需删除
canDisplayBannerAds
,然后按照我提供的第二个示例进行操作。如果有机会,我会这样做。我不知道
candisplaybanerads
会在屏幕底部显示第二个横幅视图。如何获得横幅视图的属性(如委托、框架等)?@DDPWNAGE根据我的经验,这是不可能的。您可以检查您的
视图
,查看它是否包含
ADBannerView
,并做出相应的响应,但如果您希望完整、轻松地控制,请像您已经做过的那样实现您自己的
ADBannerView
。好的。我对此很好奇。创建一个没有委托对象的横幅视图对我来说很奇怪。我将实现我自己的横幅视图。
-(void)viewDidLoad {
    [super viewDidLoad];
    if (disableAds) {
        banner.hidden = YES;
        banner.delegate = nil;
    }
}