ADBannerNavigation空格,当弹出视图控制器时Ad应该在其中

时间:2011-07-15 21:31:03

标签: iphone objective-c xcode4 iad banner-ads

我下载了iAdSuite并查看了ADBannerNavigation。

在内部,我将RootViewController更改为子类TextViewController,以便利用iAd横幅调整大小。我也希望在RootView上显示广告。

现在是RootViewController.h:

#import <UIKit/UIKit.h>
#import "TextViewController.h"

@interface RootViewController : TextViewController

@end

其他一切都是一样的。当我编译并运行时,RootView中没有广告显示,当我点击TextView时,广告突然出现。

当我点击返回时,RootView中现在有空格。

为什么? 你如何删除空格?

1 个答案:

答案 0 :(得分:0)

发现我删除ADBannerView的错误。

iAd Suite告诉我们:

  

注意:如果您的应用程序有多个标签或视图显示iAd横幅,请确保在每个视图中共享单个ADBannerView实例。然后,在用户导航到新视图之前,将共享实例的委托属性设置为nil,将其从旧视图层次结构中删除,然后将相同的实例添加到打开视图并将其委托设置为适当的视图控制器。 “AdBannerNavigation”示例显示了这种技术。

所以,在我的iADBannerView.m中,我有:

- (void)viewWillDisappear:(BOOL)animated{
  [self removeADBannerFromView];
  [super viewWillDisappear:animated];
}

- (void)removeADBannerFromView{
  NSLog(@"ad removed from view");
  ADBannerView *adBanner = SharedAdBannerView;
  adBanner.delegate = nil;
  [adBanner removeFromSuperview];
 }

- (void)dealloc{
    // we are being called here when we navigate away from this view controller,
// so go ahead and reset our AdBannerView for the next time
//


ADBannerView *adBanner = SharedAdBannerView;
adBanner.delegate = nil;
[adBanner removeFromSuperview];

[contentView release]; contentView = nil;

    [super dealloc];
 }

通过设置断点,我看到通过退出视图,在view1上调用viewWillDisappear,然后在view0上调用viewWillAppear,然后在view1上调用dealloc。

问题是view1已经从视图中删除了ADBannerView,因此[adBanner removeFromSuperView]正在从view0中删除广告。

通过从dealloc方法中删除违规代码解决了问题。