0

我正在尝试创建一个使用 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 中?请帮忙。

4

1 回答 1

0

您不能“将视图控制器推送到 CCLayer”。您使用 cocos2d 所做的一切都发生在一个 OpenGL 视图中。

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

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

于 2012-11-29T06:37:56.050 回答