如何从SKScene中调用ViewController中的方法

时间:2014-07-29 05:31:50

标签: ios sprite-kit iad interstitial

我在ViewController.h中创建了一个名为 - (void)showFullScreenAd。

的方法

我试着在我的场景中调用它。 我试过[self.view.window.rootController showFullScreenAd]。无法找到这种方法。

我尝试了ViewController * vc = [[ViewController alloc] init]

它成功完成了NSLog"插页式广告请求"。但没有显示广告。

如果我直接在ViewController.m中使用该方法 - viewDidLoad,那么NSLog会记录相同的消息"非页内广告请求"并显示插页式广告。

2 个答案:

答案 0 :(得分:0)

关于如何使用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];

答案 1 :(得分:0)

我会使用通知:SKScene对象向通知中心(NSNotification)发布系统范围的通知(NSNotificationCenter),目标视图控制器只是'注册'( ie,监听)同一个通知并实现一个处理程序方法。这是Objective-C / Cococa的一种普遍模式。

一些好处是:

  1. 它是可扩展的:如果在将来,您希望将相同的消息发送到视图控制器形成不同的场景,只需从新场景发布相同的通知:无需包含标题并定义新的属性。只需要包含通知名称的定义。

  2. 视图控制器拥有视图,视图显示场景。通过不从场景中引用视图控制器,可以避免引用周期的风险,从而避免内存泄漏。

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

相关问题