1

我下载了 iAdSuite并查看了 ADBannerNavigation。

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

现在是 RootViewController.h:

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

@interface RootViewController : TextViewController

@end

其他一切都是一样的。编译运行的时候,RootView里面没有广告,点击进入TextView的时候,突然出现广告。

当我单击返回时,RootView 中现在有空白区域。

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

4

1 回答 1

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];
 }

通过设置断点,我看到通过退出视图,viewWillDisappear 在 vi​​ew1 上被调用,然后 viewWillAppear 在 vi​​ew0 上被调用,然后在 view1 上被释放。

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

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

于 2011-07-19T14:46:07.210 回答