我正在使用Cocos2D,我需要访问从另一个类添加到UIViewController的UIView中的父方法。我的层次结构是这样的:
分支1:window>viewController.view>glView>joinedMapsScene>joinedMapsLayer
分支2:窗口>viewController.view>foregroundLabelView
当我的标签类曾经是Cocos2D的一部分时,通过这样做访问很容易:
JoinedMapsScene *joinedMapsScene = (JoinedMapsScene*)self.parent;
[joinedMapsScene.tetraCounter incTetras:-1];
但现在我需要从joinedMapsLayer调用foregroundLabelView中的方法。这可能不是一个很大的问题,但我仍然对这类事情感到困惑。
如果我理解得很好,那么您希望从joinedMapsLayer中检索foregroundLabelView实例。有一种方法,但我不知道它是否是最优的。您可以在AppDelegate.h中实例化一个foregroundLabelView。
然后,当您初始化您的foregroundLabelView时,您将其分配给AppDelegate foregroundLabeleView:在您的foregroundLabelView.m中(您必须导入AppDelegate.h),在init方法结束时,您可以执行
AppDelegate * delegate = (AppDelegate *)[[UIApplication sharedApplication] delegate];
delegate.foregroundLabelView = self;
然后,无论何时,你都可以通过以下操作检索:
ForegroundLabelView * tmp = ((AppDelegate *)[[UIApplication sharedApplication] delegate]).foregroundLabelView;
然后访问方法:
[tmp method];
我认为这应该奏效。