Ios 当ad加载失败时,在Swift中隐藏iAd ADBannerView-无委托或委托未实现DIDFILETORECEIVEADWITHERROR

Ios 当ad加载失败时,在Swift中隐藏iAd ADBannerView-无委托或委托未实现DIDFILETORECEIVEADWITHERROR,ios,swift,iad,Ios,Swift,Iad,这是我正在使用的代码: var bannerView = ADBannerView() self.canDisplayBannerAds = true //show ad banner if an ad loads func bannerViewDidLoadAd(banner: ADBannerView!) {bannerView.hidden = false} //hide ad banner if the ad fails to load func bannerViewFailsToL

这是我正在使用的代码:

var bannerView = ADBannerView()
self.canDisplayBannerAds = true

//show ad banner if an ad loads
func bannerViewDidLoadAd(banner: ADBannerView!)
{bannerView.hidden = false}

//hide ad banner if the ad fails to load
func bannerViewFailsToLoadAd(banner: ADBannerView!,didFailToReceiveAdWithError error: NSError!)
{bannerView.hidden = true
 println("failed to receive ad")}
当我将iAd填充率设置为0%时,不会打印任何内容,我从控制台获得以下输出:

ADBannerView:未经处理的错误(没有委托或委托未实现DidFailToReceiveAvithError:):错误域=ADErrorDomain代码=5“操作无法完成。横幅视图可见,但没有内容”UserInfo=0x7fd3fd3335e0{ADInternalErrorCode=5,NSLocalizedFailureReason=横幅视图可见但没有内容,ADInternalErrorDomain=ADErrorDomain}


使用
self.candisplaybanerads=true
时将不调用委托方法。您需要自己创建一个
ADBannerView
,并为要调用的委托方法设置其
Delegate
,例如,
bannerView.Delegate=self

self.canDisplayBannerAds=true
是一种轻松实现iAd横幅的方法。它将为您创建一个
ADBannerView
,在收到广告时显示,在未收到广告时隐藏。以这种方式实现iAd横幅时,无需实现委托方法

因此您有两个选项,删除
var bannerView=ADBannerView()
并使用
self.candisplaybanerads=true
提供的iAd横幅,或者删除
self.candisplaybanerads=true
并完成您自己的
ADBannerView


如果您决定实现自己的
ADBannerView
检查我的答案,只需忽略AdMob实现。

@Daniel_Storm好的。为了让我正确理解,您能否确认如果我只使用self.candisplaybanerads=true,如果加载失败,横幅部分将隐藏?@dwinbrown是,当使用
self.canDi时splayBannerAds=true
如果横幅无法从iAd网络接收广告,它将自己移出屏幕。在设备上的设置中将填充率设置为50%,并观看
ADBannerView
在接收广告时显示和隐藏,但接收广告失败。@dwinbrown您是否在storyboa中添加了
ADBannerView
是偶然的吗?如果是这样,请删除它。@Daniel_Storm啊,就是这样,非常感谢,现在它工作得非常好!@DanielStorm这段时间我的横幅都变白了,现在我知道为什么了!