UITableViewController 内のストーリーボードで iAd を動作させることができません。
これは基本的に私がこれまで行ってきたことです: ストーリーボードでは、UITableViewController のシーンの下部に iAd バナー ビューをドラッグしました。(ストーリーボードがそれを妨げているため、ビュー自体にバナーを設定できませんでした。最初のレスポンダーと UITableViewController のアイコンの横に iAd オブジェクトをドラッグすることしかできませんでした。)
UITableViewController のヘッダーには、次のものがあります。
#import <UIKit/UIKit.h>
#import "ListViewController.h"
#import <iAd/iAd.h>
@interface ListViewController : UITableViewController <ADBannerViewDelegate>{
bool bannerIsVisible;
}
@property (strong, nonatomic) IBOutlet ADBannerView *iAd;
@end
UITableViewController の実装には、次のものがあります。
- (void)viewDidLoad
{
[super viewDidLoad];
iAd.delegate = self;
// iAd.frame = CGRectMake(0.0,200.0,iAd.frame.size.width,iAd.frame.size.height); // does not work
// self.tableView.tableFooterView = iAd; // Display the banner at the middle of the screen (depending upon the number item of the table)
// Do not know how to have the default banner to appear at the very bottom of the screen (behind the tab bar) when the view is loaded ?
}
- (void)bannerView:(ADBannerView *)banner didFailToReceiveAdWithError:(NSError *)error
{
NSLog(@"didFailToReceiveAdWithError");
if (bannerIsVisible)
{
[UIView beginAnimations:@"animateAdBannerOff" context:NULL];
banner.frame = CGRectMake(0.0,350.0,banner.frame.size.width,banner.frame.size.height);
[UIView commitAnimations];
bannerIsVisible = NO;
}
}
- (void)bannerViewDidLoadAd:(ADBannerView *)banner
{
NSLog(@"bannerViewDidLoadAd");
if (!bannerIsVisible)
{
[UIView beginAnimations:@"animateAdBannerOn" context:NULL];
banner.frame = CGRectMake(0.0,317.0,banner.frame.size.width,banner.frame.size.height);
[UIView commitAnimations];
bannerIsVisible = YES;
}
}
アイデアは、バナーを画面の下部に表示し、バナーの読み込みが成功した場合にタブ バーの上に表示することです。
私が抱えている問題: この構成では、「didFailToReceiveAdWithError」メソッドが呼び出されることもあれば、「bannerViewDidLoadAd」メソッドが呼び出されることもありますが、いずれの場合もバナーは表示されません。