在CCLayer中添加UINavigationController

时间:2012-11-29 01:11:37

标签: uinavigationcontroller crash cocos2d-iphone cclayer

我正在尝试创建一个使用cocos2d作为主屏幕的应用程序,以及一个用于某些表和信息的UINavigationController。我使用此代码尝试将UINavigationController(设置)推送到视图

UINavigationController *controller = [[UINavigationController alloc] init];
Settings *newTableViewController = [[Settings alloc] init];
[controller pushViewController:newTableViewController animated:YES];

此代码在CCLayer中执行,而Settings是UINavigationController。

我收到此错误

*** Terminating app due to uncaught exception 'NSInvalidArgumentException', reason: 'Pushing a navigation controller is not supported'

这是否意味着我无法将NaviagationController推送到CCLayer? 请帮助。

1 个答案:

答案 0 :(得分:0)

您无法“将视图控制器推送到CCLayer”。使用cocos2d进行的所有操作都在一个OpenGL视图中进行。

如果您真的想要这样做,可以更改应用程序的根视图控制器的创建。使您的应用程序视图控制器成为UINavigationController的子类而不是UIViewController,然后从您的应用程序委托获取rootViewController并随时将任何其他视图控制器推送/弹出它。无论如何,我不认为,这是一个好主意。

关于您的异常我假设您的Settings类是UINavigationController的子类。您要推送到导航控制器的所有控制器必须从UIViewController派生,而不是UINavigationController。