Фон: В прошлой неделе я задал вопрос об использовании adWhirl через несколько viewControllers, но, к сожалению, я до сих пор не получаю его.Как не сделать каждый viewController делегатом adWhirl? (есть шаблон дизайна AdWhirl)
Я принял эти предложения и теперь использовал один экземпляр adWhirl, созданный в делегате приложения, в каждом диспетчере viewController, но я не вижу, как я могу ответить на события делегата adWhirl в моем диспетчере viewController (adWhirlDidReceiveAd:, adWhirlDidFailToReceiveAd:
и т. Д.), Так как приложение делегат не знает, какой viewController в настоящее время отображает его adView.
Поэтому моя путаница ...
Есть ли шаблон дизайна для этого? Я думаю, должно быть. Я не хочу отображать все мои viewControllers с помощью кода делегата adWhirl, если я могу его избежать.
То, что у меня сейчас есть в каждом представлении, находится ниже. Я попытался настроить метод в делетете приложения, который каждый контроллер представления мог вызвать «зарегистрироваться», который взял на себя управление adView делегата приложения, - полагая, что, когда делегат получает такие события, как adWhirlDidReceiveAd
, он мог бы выполнить описанную ниже работу. Такой вид работы заставлял меня думать, что я изобретаю колесо.
Вопрос: Есть ли шаблон дизайна для использования объявления adWhirl через несколько viewControllers?
- (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];
}
Спасибо, что он работает. Не так очевидно новичкам ... –