2012-02-07 11 views
0

私はCocos2Dを使用しています。別のクラスのUIViewControllerに追加されたUIViewの親メソッドにアクセスする必要があります。私の階層はこのように書きます:Cocos2DクラスのUIViewメソッド

支店1:ウィンドウ> viewController.view> glView> joinedMapsScene> joinedMapsLayer

支店2:ウィンドウ> viewController.view> foregroundLabelView

私のラベルクラス

JoinedMapsScene *joinedMapsScene = (JoinedMapsScene*)self.parent; [joinedMapsScene.tetraCounter incTetras:-1];

:Cocos2Dの一部に使用され、このような何かを行うことによって簡単だったアクセス210

しかし、私はjoinedMapsLayerからforegroundLabelViewのメソッドを呼び出す必要があります。それはcocos2Dの質問のそれほどではないかもしれませんが、私はこの種のものについてまだ混乱しています。

答えて

1

foregroundLabelViewインスタンスをjoinedMapsLayerから取得したいと思っていたらうれしいです。方法はありますが、最適かどうかわかりません。 AppDelegate.hで、foregroundLabelViewをインスタンス化できます。あなたのforegroundLabelViewはあなたがAppDelegate foregroundLabelViewに割り当てinitの際

はその後:あなたのforegroundLabelView.mにinitメソッドの最後にあなたがすることができる、(あなたはAppDelegate.hをインポートする必要が)

AppDelegate * delegate = (AppDelegate *)[[UIApplication sharedApplication] delegate]; 
delegate.foregroundLabelView = self; 

そして、あなたはいつでもあなたはやってそれを取得することができます。

ForegroundLabelView * tmp = ((AppDelegate *)[[UIApplication sharedApplication] delegate]).foregroundLabelView; 

をし、その後方法アクセス:

[tmp method]; 

これはうまくいくと思います。

+0

これは、私はもはやforegroundLabelViewをviewController.viewにサブビューとして追加できないことを意味しますか? – VagueExplanation

+0

Nono!あなたはできる!しかし、あなたはまた、アプリケーションデリゲートからそれへのポインタを割り当てます。このようにして、デリゲートからポインタを呼び出すことで、どこからでもそれを取得できます。 –

+0

ビューは常に同じです!それは唯一のものです!しかし、あなたはそれにアクセスするには2つの方法があります:クラス(そしてあなたが言ったように子)から、またAppDelegateから(そしてすべてのクラスからappDelegateを取り出すことができるので、すべてのクラスから) –

関連する問題