我在ViewController.h中创建了一种方法 - (void)showfullscreenad。

我试图称之为我的场景。 我尝试了[self.view.Window.RootController] showfullscreenad]。找不到这种方法。

我尝试了ViewController * VC= [[ViewController Alloc] Init]

它确实成功了nslog“鸿沟广告请求”。但没有显示广告。

如果直接在ViewController.m - ViewDidload中使用该方法,它是相同的消息“鸿沟广告请求”并显示一个缺口广告。

有帮助吗?

解决方案

我将使用通知:SKScene对象将一个系统范围的通知(NSNotification)发布到通知中心(NSNotificationCenter),并且目标视图控制器只是“寄存器”(即,侦听)相同的通知并实现处理程序方法。这是目标-C / Cococa的普遍模式。

一些好处是:

  1. 它是可扩展的:如果在将来,要将相同的消息发送到视图控制器的表单不同的场景,只需发布新场景的相同通知:无需包含标题并定义一个新的财产。只需要yo包括通知名称的定义。

  2. 视图控制器拥有视图,视图现场。通过未引用从场景中的视图控制器,避免参考周期的风险,因此内存泄漏。

  3. 顺便说一下,这就是我在游戏中所做的事。

其他提示

如何使用IAD;

在ViewController.m:

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

然后在您的myscene.h填写这些行:

#import "ViewController.h"

@property (nonatomic) ViewController *viewController;
.

也不要忘记在ViewController.m中添加IAD;

[self.view addSubview:adView];
.

许可以下: CC-BY-SA归因
不隶属于 StackOverflow
scroll top