iPhone:创建新的“基于视图的应用程序”=没有视图控制器?

时间:2010-06-20 09:46:08

标签: iphone objective-c cocoa-touch uikit

我在Xcode中创建了一个新的iPhone“基于视图的应用程序”。然后我添加了一个新的“UIViewController子类”,并检查了“使用XIB进行用户界面。现在问题是,在连接所有变量和消息处理程序后,我无法使用以下代码将新控制器压入堆栈:

[self.navigationController pushViewController:self.cabinetController
                                     animated:YES];

所有的变量和视图都是正确连接的,所以我能想到的就是它通过将其推送到“navigationController”来实现它的方式。这里有什么我想念的吗? (我对iPhone和Apple编程很新,所以它可能是一个非常简单的疏忽)。

我意识到没有提供足够的信息......这里是项目的链接。请注意,这是一项教育活动,有一些创造性的名称课程。

http://files.me.com/nippysaurus/4yqz8t

3 个答案:

答案 0 :(得分:0)

您需要将视图控制器更改为导航控制器,并将其根视图控制器设置为当前视图控制器。

答案 1 :(得分:0)

如果您检查了self.navigationController,就会发现它是nil。消息传递零没有伤害,所以这里没有错误信息。

使用UINavigationController添加另一个图层,并添加RandomShitViewController(漂亮的名字btw。)作为其根视图控制器。

导航控制器处理推/弹部件,旧控制器管理其视图。

答案 2 :(得分:0)

在appDelegate中创建一个UINavigationController实例变量,然后使用现有的viewController作为导航控制器的rootViewController。

e.g。在使用UITableViewController的纯代码中(您可以使用xibs以及模板应用程序可能执行的操作)。

- (BOOL)application:(UIApplication *)application didFinishLaunchingWithOptions:(NSDictionary *)launchOptions {    

  // Create root view and navigation controller
  UITableViewController *rootViewController = [[[UITableViewController alloc] initWithStyle:UITableViewStyleGrouped] autorelease];
  self.navigationController = [[[UINavigationController alloc] initWithRootViewController:rootViewController] autorelease];

  // Not necessary if you're using xibs
  self.window = [[[UIWindow alloc] initWithFrame:[[UIScreen mainScreen] bounds]] autorelease];

  // Add the nav controller's root view to the window
  [window addSubview:navigationController.view];
  [window makeKeyAndVisible];

  return YES;
}