我发现自己的情况如下。
在AppDelegate中,我需要能够访问我在后面的视图控制器中创建的SKView,以便我可以在进入后台时暂停SKView。我知道能够做到这一点的唯一方法是在AppDelegate中创建SKView,然后在我稍后用作属性的视图控制器中设置它。缺点是,在我首先创建之前,我不存在该视图。因此,我正在做以下事情。
@property (nonatomic, strong) SKView *skView;
.
.
.
self.skView = [[SKView alloc] init];
SceneViewController *svc = [[SceneViewController alloc] initWithNibName:nil bundle:nil];
[svc setSkview:self.skView];
在SceneViewController中我有
@property (nonatomic, strong) IBOutlet SKView *skview;
我遇到的问题是,我是否真的对IBOutlet的财产有强烈的设定?还有一种比这更好的方法来做我正在做的事情。
我也以同样的方式将SceneViewController传递给另一个视图控制器,这样它也可以获得对它的引用,以允许它在适当的时候呈现视图。我认为上述问题的答案对此也有帮助。
答案 0 :(得分:1)
为什么不在拥有UIApplicationWillResignActiveNotification
的视图控制器中监听SKView
并暂停呢?
答案 1 :(得分:0)
理想情况下,您应该使用委托在2个视图控制器之间进行通信,而不是相互保持参考,请参阅协调视图控制器... https://developer.apple.com/library/ios/featuredarticles/ViewControllerPGforiPhoneOS/ManagingDataFlowBetweenViewControllers/ManagingDataFlowBetweenViewControllers.html#//apple_ref/doc/uid/TP40007457-CH8-SW1
答案 2 :(得分:0)
让单身人士确保只有一个班级。
+(SKView *)singleton
{
static SKView *shared = nil;
if(shared == nil)
{
shared = [[SKView alloc] init];
}
return shared;
}