iOS   发布时间:2022-03-30  发布网站:大佬教程  code.js-code.com
大佬教程收集整理的这篇文章主要介绍了ios – 将canDisplayBannerAds更改为NO不会更新视图以删除广告横幅大佬教程大佬觉得挺不错的,现在分享给大家,也给大家做个参考。
奇怪的问题,我一直在这个墙上吊着头几个小时,但一直无法解决.

我有一个使用故事板的iOS 7应用程序.在我的主根视图控制器上,我使用self.canDisplayBAnnerAds = YES在视图底部显示iAd横幅.这非常有效.

我有一个设置视图控制器,从那里,我的用户可以进行应用内购买以永久删除广告.该功能也可以.我在NSUserDefaults standardUserDefaults中存储BOOL值以跟踪他们是否已完成购买.

让我感到困惑的是,如果用户在横幅中接收广告,进入设置视图控制器,然后进入我的购买视图控制器,成功购买,然后返回主根视图,横幅广告仍然可见.如果用户完全退出应用程序,然后重新启动,则不会再次显示,因为这是我在viewWillAppear中显示横幅的方式:

NSUserDefaults *defaults = [NSUserDefaults standardUserDefaults];
bool saved = [defaults boolForKey:t_Save];

if (saved == NO) {
    self.canDisplayBAnnerAds = YES;
} else if (saved == YES) {
    self.canDisplayBAnnerAds = NO;
}
NSLog(self.canDisplayBAnnerAds ? @"YES" : @"NO");

因此,当这些逻辑在他们制作或恢复购买后重新启动时,这种逻辑运行正常.但是,我希望视图在购买后立即更新.但是,我不能为我的生活让那个愚蠢的横幅广告在应用程序首次启动它时就会消失.

有什么奇怪的,如果我创建一个只设置self.canDisplayBAnnerAds = NO的按钮,那么这会使横幅广告消失.但是当它在viewWillAppear,viewDidAppear中调用时,或者甚至在我创建的专用方法中,一旦完成购买就调用它,它就不起作用.

我在想,也许横幅视图在某个地方设置了缓存而且它没有被淘汰,但我不知道如何强迫它.我也在想,如果我可以强制根视图控制器基本上转到nil并从头开始,那可能会这样做,但我不知道如何强迫它.

有人有什么想法?

解决方法

我遇到了同样的问题,并找到了适用于我的解决方法

self.canDisplayBAnnerAds = NO;
for (id aView in self.view.subviews) {
  if ([aView isKindOfClass:[ADBAnnerView class]]) {
     [(ADBAnnerView *)aView setHidden:YES];
  }
}

我不认为这是一个干净的解决方案,但由于它最终工作,我将保持它,直到我找一个更好的解决方案.

大佬总结

以上是大佬教程为你收集整理的ios – 将canDisplayBannerAds更改为NO不会更新视图以删除广告横幅全部内容,希望文章能够帮你解决ios – 将canDisplayBannerAds更改为NO不会更新视图以删除广告横幅所遇到的程序开发问题。

如果觉得大佬教程网站内容还不错,欢迎将大佬教程推荐给程序员好友。

本图文内容来源于网友网络收集整理提供,作为学习参考使用,版权属于原作者。
如您有任何意见或建议可联系处理。小编QQ:384754419,请注明来意。