如何在Skscene查看ViewController中的方法
-
20-12-2019 - |
题
我在ViewController.h中创建了一种方法 - (void)showfullscreenad。
我试图称之为我的场景。 我尝试了[self.view.Window.RootController] showfullscreenad]。找不到这种方法。
我尝试了ViewController * VC= [[ViewController Alloc] Init]
它确实成功了nslog“鸿沟广告请求”。但没有显示广告。
如果直接在ViewController.m - ViewDidload中使用该方法,它是相同的消息“鸿沟广告请求”并显示一个缺口广告。
解决方案
我将使用通知:SKScene
对象将一个系统范围的通知(NSNotification
)发布到通知中心(NSNotificationCenter
),并且目标视图控制器只是“寄存器”(即,侦听)相同的通知并实现处理程序方法。这是目标-C / Cococa的普遍模式。
一些好处是:
-
它是可扩展的:如果在将来,要将相同的消息发送到视图控制器的表单不同的场景,只需发布新场景的相同通知:无需包含标题并定义一个新的财产。只需要yo包括通知名称的定义。
-
视图控制器拥有视图,视图呈现场。通过未引用从场景中的视图控制器,避免参考周期的风险,因此内存泄漏。
顺便说一下,这就是我在游戏中所做的事。
其他提示
如何使用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];
. 不隶属于 StackOverflow