背景: 先週、複数のviewControllerでadWhirlを使用することについて質問しましたが、残念ながらまだ取得できていません。
adWhirlDidReceiveAd:, adWhirlDidFailToReceiveAd:
提案を受け取り、各viewControllerでアプリデリゲートで作成された1つのadWhirlインスタンスを使用しますが、アプリデリゲートが認識していないため、viewController(など)でadWhirlデリゲートイベントに応答する方法がわかりません。どのviewControllerが現在そのadViewを表示しているか。
したがって、私の混乱...
このためのデザインパターンはありますか?あるに違いないと思います。回避できるのであれば、すべてのviewControllerに定型のadWhirlデリゲートコードを使用したくありません。
各viewControllerで今得ているものは以下のとおりです。各ViewControllerが、アプリデリゲートのadViewの所有権を取得している「register」に呼び出すことができるメソッドをアプリデリゲートに設定してみました。デリゲートがのようなイベントを受信するとadWhirlDidReceiveAd
、以下の作業を実行できると考えました。この種のことはうまくいきましたが、私は車輪の再発明をしていると思いました。
質問:複数のviewController間でadWhirlビューを使用するためのデザインパターンはありますか?
- (void)viewDidLoad
{
[super viewDidLoad];
AppDelegate *appDelegate = (AppDelegate*)[[UIApplication sharedApplication] delegate];
[self.view addSubview:appDelegate.adView];
[self.view bringSubviewToFront:appDelegate.adView];
CGSize adSize = [appDelegate.adView actualAdSize];
CGRect onScreenFrame = appDelegate.adView.frame;
onScreenFrame.size.height = adSize.height; // fit the ad
onScreenFrame.size.width = adSize.width;
onScreenFrame.origin.x = (self.view.frame.size.width - adSize.width)/2; // center
onScreenFrame.origin.y = (self.view.frame.size.height - adSize.height);
appDelegate.adView.frame = onScreenFrame;
}
- (void)viewDidDisappear:(BOOL)animated
{
AppDelegate *appDelegate = (AppDelegate*)[[UIApplication sharedApplication] delegate];
[appDelegate.adView removeFromSuperview];
}