我没有设法让 iAd 在故事板中的 UITableViewController 中工作。
到目前为止,这基本上是我所做的:在故事板中,我在 UITableViewController 的场景底部拖动了一个 iAd 横幅视图。(我无法在视图本身中设置横幅,因为故事板阻止了它。我只能将 iAd 对象拖到第一响应者和 UITableViewController 的图标旁边。)
在 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”方法,但在每种情况下都不会显示横幅。