Вопрос

Я создал метод в ViewController.h с именем - (void)showFullScreenAd.

Я попытался вызвать это внутри моей сцены.Я попробовал [self.view.window.RootController showFullScreenAd].Не могу найти этот метод.

Я попробовал ViewController *vc = [[ViewController alloc] init]

Он успешно зарегистрировал "Запрос на межстраничную рекламу".Но реклама не показывалась.

Если я использую метод непосредственно в ViewController.m - viewDidLoad, он выводит то же сообщение "Запрос промежуточной рекламы" и отображает промежуточную рекламу.

Это было полезно?

Решение

Я бы использовал уведомления:то SKScene объект отправляет общесистемное уведомление (NSNotification) в центр уведомлений (NSNotificationCenter), а целевой контроллер представления просто "регистрирует" (т.е. прослушивает) это же уведомление и реализует метод обработчика.Это распространенный шаблон в Objective-C/Cococa.

Некоторыми преимуществами являются:

  1. Она расширяема:если в будущем вы захотите отправить такое же сообщение контроллеру просмотра из другой сцены, просто отправьте такое же уведомление из новой сцены:нет необходимости включать заголовки и определять новое свойство.Нужно только указать определение названия уведомления.

  2. Контроллер представления владеет вид, и вид из окна представляет сцена.Около не ссылающийся используя контроллер просмотра со сцены, вы избегаете риска опорного цикла и, следовательно, утечки памяти.

Кстати, это то, что я делаю в своих играх.

Другие советы

Предложение о том, как использовать IAD;

в viewcontroller.m:

MyScene * scene = [MyScene sceneWithSize:skView.bounds.size];
scene.viewController = self;
.

, а затем в вашем MyScene.h Поместите эти линии:

#import "ViewController.h"

@property (nonatomic) ViewController *viewController;
.

Также не забудьте добавить IAD в viewcontroller.m;

[self.view addSubview:adView];
.

Лицензировано под: CC-BY-SA с атрибуция
Не связан с StackOverflow
scroll top