Iphone cocos2d和UINavigationController故障

Iphone cocos2d和UINavigationController故障,iphone,ios,cocos2d-iphone,Iphone,Ios,Cocos2d Iphone,我正在开发一个应用程序,我希望在应用程序的主屏幕中使用cocos2d,但在其他地方不使用(在其他地方,标准的UIKit内容更合适)。因此,我已经将我的EagleView设置为UINavigationController中的根视图,当用户点击正确的位置时,我将新的视图控制器推到导航控制器上 到目前为止,效果很好。主视图中的cocos2d/chipmunk工具工作得很好,推出了一个新的视图控制器 但是当我回到主视图时,什么都没有。我看到的只是窗口背景和导航栏 我在根视图控制器的-viewdide中设

我正在开发一个应用程序,我希望在应用程序的主屏幕中使用cocos2d,但在其他地方不使用(在其他地方,标准的UIKit内容更合适)。因此,我已经将我的EagleView设置为UINavigationController中的根视图,当用户点击正确的位置时,我将新的视图控制器推到导航控制器上

到目前为止,效果很好。主视图中的cocos2d/chipmunk工具工作得很好,推出了一个新的视图控制器

但是当我回到主视图时,什么都没有。我看到的只是窗口背景和导航栏

我在根视图控制器的-viewdide中设置了一个断点:查看弹出后发生了什么,到目前为止,一切都正常(或者至少与推之前相同)

推送只是bog标准导航控制器推送。我没有看到任何记忆警告。有人对发生的事有想法吗

有一个简单的演示项目可以在

这是基于cocos2d+花栗鼠项目模板的。点击Grossini,一个新的视图控制器被推到堆栈上。点击后退按钮,格罗西尼就不见了


有趣的是,这个问题只存在于iOS设备上(我运行的是4.1),而不存在于模拟器中。

我已经解决了您的问题。 您必须遵循代码中的一些步骤

在RootViewController nib文件中,将视图标识从HomeView更改为UIView

在RootViewController类中创建主视图对象

@interface RootViewController : UIViewController {
    HomeView *homeViewObj;
}
在ViewDidLoad方法的RootViewController.m文件中添加以下代码

homeViewObj = [[HomeView alloc] initWithFrame:CGRectMake(0, 0, self.view.frame.size.width, self.view.frame.size.height)];
[self.view addSubview:homeViewObj];
并在所需位置替换ViewDidLoad方法中的此代码

CCDirector *director = [CCDirector sharedDirector];

    // attach the openglView to the director
    [director setOpenGLView:(EAGLView *)homeViewObj];

    [director setDeviceOrientation:kCCDeviceOrientationPortrait];
    [director setAnimationInterval:1.0/60];
    [director setDisplayFPS:YES];
那么问题就解决了,一切都好

问候,


Satya

我怀疑这是否是问题所在,但你泄露了这两个家伙:我甚至不确定这两个家伙是什么,但它们看起来并不相关。我发现,如果在EagleView上调用my-viewDidLoad-setNeedsLayout,则会恢复cocos2d对象,并且在导航控制器弹出到根目录后,主视图可见。不过,有一个明显的闪烁——cocos2d对象暂时不可见,但随后它们出现了。我的演示的一个修改版本,其中包含了这是在这感觉像进步,但它是一个讨厌的闪烁。谢谢你,这修复了问题。但我不完全明白为什么。你能解释一下吗?汤姆,我执行了你的代码并测试了它,我发现一件事,当你回到主视图时,它不是显示“EagleView”,而是检测触摸并执行操作。双击时,视图转到第二个视图控制器,然后我单击后退,然后显示EAGLView。然后我了解到一些视图覆盖在“EagleView”上,所以我将普通视图放在InterfaceBuilder中,并将EagleView添加为子视图。然后问题就解决了!!我也在找同样的,Thanx Satya