UITableViews を使用してアプリ全体で ADBannerView の共有インスタンスを使用 する 多くのビュー コントローラーで iAd バナーの単一の共有インスタンスを作成する方法は? rootviewcontroller を含む複数のビューで共有される AdBannerView はどのように?
didFinishLoading メソッドの AppDelegate クラスにロードされる単一の ADBannerView が必要です。この ADBannerView は、(AppDelegate.h をインポートすることによって) 関連するすべての ViewController によって取得され、ユーザーが VC 間を移動したときにそれに応じて表示されることが期待されます。
私が実装したコードは次のとおりです。
AppDelegate.h @interface AppDelegate : UIResponder
@property (strong, nonatomic) IBOutlet ADBannerView *adView;
@property (nonatomic, assign) BOOL bannerIsVisible;
- (ADBannerView *)sharedAdBannerView;
AppDelegate.m
ADBannerView *adView;
BOOL bannerIsVisible;
- (BOOL)application:(UIApplication *)application didFinishLaunchingWithOptions(NSDictionary *)launchOptions
{
// create the iAdBannerView
adView = [[ADBannerView alloc] initWithFrame:CGRectZero];
adView.frame = CGRectOffset(adView.frame, 0, -50);
adView.requiredContentSizeIdentifiers = [NSSet setWithObject:ADBannerContentSizeIdentifier320x50];
adView.currentContentSizeIdentifier = ADBannerContentSizeIdentifier320x50;
adView.delegate=self;
self.bannerIsVisible=NO;
// Override point for customization after application launch.
return YES;
}
#pragma begin of iAdBannerView Delegate Methods
- (void)bannerView:(ADBannerView *)banner didFailToReceiveAdWithError:(NSError *)error
{
if (self.bannerIsVisible)
{
[UIView beginAnimations:@"animateAdBannerOff" context:NULL];
banner.frame = CGRectOffset(banner.frame, 0, -50);
[UIView commitAnimations];
self.bannerIsVisible = NO;
}
}
- (void)bannerViewDidLoadAd:(ADBannerView *)banner
{
if (!self.bannerIsVisible)
{
[UIView beginAnimations:@"animateAdBannerOn" context:NULL];
// banner is invisible now and moved out of the screen on 50 px
banner.frame = CGRectOffset(banner.frame, 0, 50);
[UIView commitAnimations];
self.bannerIsVisible = YES;
}
}
- (ADBannerView *)sharedAdBannerView
{
return adView;
}
[NSNotificationCenter defaultCenter] postNotificationName: メソッドを使用してバリエーションも試しましたが、最終的には同じ問題に直面しています:
問題: ViewController で ADBannerView を表示したいのですが、AppDelegate から取得するにはどうすればよいですか?
私は現在持っています:
ADBannerView *banner = [[UIApplication sharedApplication] sharedAdBannerView];
[self.view addSubview:banner];
しかし、多くのエラーが発生しており、それを回避できないようです。
エラー: UIApplication の可視の @interface がセクター sharedAdBannerView を宣言していません。
私はかなり基本的な何かが欠けていると確信しています。
どんな助けでも大歓迎です...ありがとう、ジェームズ