我有多個UITableViews一個應用程序,並在上午執行的iAds的過程。根據Apple文檔(http://developer.apple.com/library/ios/#technotes/tn2286/_index.html#//apple_ref/doc/uid/DTS40011212),我創建了屬於我的應用程序委託的共享橫幅,應用程序委託也是橫幅的代表。這樣做效果很好,在橫幅加載和用戶切換屏幕之後,廣告在各種視圖控制器中很好地顯示。使用共享ADBannerView的實例將通過應用與UITableViews
問題是,由於視圖控制器的viweWillAppear方法(我調用我的「fixUpAdView」方法)出現在加載橫幅之前,沒有在第一個viewController出現的廣告出現。
我想,我沒有得到的是部分本(從蘋果文檔): 「讓你的應用程序委託告知當前視圖控制器是否應該顯示或隱藏廣告可以使用UINavigationControllerDelegate或UITabBarControllerDelegate協議。推橫幅顯示它。「我知道我需要將一些東西放入我的bannerViewDidLoadAd和failToReceive方法中,但對於如何做到這一點有點困惑。
我不希望廣告顯示在我所有的視圖控制器(只是其中6)和我也有在app數模態的觀點(在任何的這些無廣告)。
下面是我的一些代碼: 在我的appDelegate:
- (void)bannerViewDidLoadAd:(ADBannerView *)banner {
NSLog(@"bannerViewDidLoadAD");
if (!_adBannerViewIsVisible)
_adBannerViewIsVisible = YES;
}
- (void)bannerView:(ADBannerView *)banner didFailToReceiveAdWithError:(NSError *)error
{
NSLog(@"BannerAd didfailtoreceive");
if (_adBannerViewIsVisible)
_adBannerViewIsVisible = NO;
}
- (ADBannerView *)sharedAdBannerView
{
if (_sharedAdBannerView == nil) {
Class classAdBannerView = NSClassFromString(@"ADBannerView");
if (classAdBannerView != nil) {
_sharedAdBannerView = [[classAdBannerView alloc] initWithFrame:CGRectZero];
[_sharedAdBannerView setRequiredContentSizeIdentifiers:[NSSet setWithObjects:
ADBannerContentSizeIdentifier320x50,
ADBannerContentSizeIdentifier480x32, nil]];
[_sharedAdBannerView setCurrentContentSizeIdentifier:ADBannerContentSizeIdentifier320x50];
[_sharedAdBannerView setFrame:CGRectOffset([_sharedAdBannerView frame], 0,
-(iAD_BANNER_HEIGHT))];
[_sharedAdBannerView setDelegate:self];
}
}
return _sharedAdBannerView;
}
在我的視圖控制器:
- (void)viewWillAppear:(BOOL)animated {
if ([[AppDelegate ad] shouldShowAds]) {
if (!self.contentView) {
self.contentView = [[UIView alloc] initWithFrame:[[self view] bounds]];
[self.view addSubview:_contentView];
}
[self.contentView addSubview:topView];
[self fixupAdView];
[self.view addSubview:[[AppDelegate ad] sharedAdBannerView]];
}
[super viewWillAppear:NO];
}
#pragma mark
#pragma mark iADS
- (void)fixupAdView {
if ([[AppDelegate ad] sharedAdBannerView] != nil) {
[[[AppDelegate ad] sharedAdBannerView] setCurrentContentSizeIdentifier:ADBannerContentSizeIdentifier320x50];
[UIView beginAnimations:@"fixupViews" context:nil];
if ([[AppDelegate ad] adBannerViewIsVisible]) {
CGRect adBannerViewFrame = [[[AppDelegate ad] sharedAdBannerView] frame];
adBannerViewFrame.origin.x = 0;
adBannerViewFrame.origin.y = 0;
[[[AppDelegate ad] sharedAdBannerView] setFrame:adBannerViewFrame];
CGRect contentViewFrame = _contentView.frame;
contentViewFrame.origin.y = iAD_BANNER_HEIGHT;
contentViewFrame.size.height = self.view.frame.size.height -
iAD_BANNER_HEIGHT;
_contentView.frame = contentViewFrame;
}
else {
CGRect adBannerViewFrame = [[[AppDelegate ad] sharedAdBannerView] frame];
adBannerViewFrame.origin.x = 0;
adBannerViewFrame.origin.y = -(iAD_BANNER_HEIGHT);
[[[AppDelegate ad] sharedAdBannerView] setFrame:adBannerViewFrame];
CGRect contentViewFrame = _contentView.frame;
contentViewFrame.origin.y = 0;
contentViewFrame.size.height = self.view.frame.size.height;
_contentView.frame = contentViewFrame;
}
[UIView commitAnimations];
}
}
我正在考慮使用通知中心來處理這個問題 - 什麼想法? –