如何在一个视图中关闭自己并打开另一个视图?

时间:2011-02-06 21:20:22

标签: objective-c cocoa macos nsview osx-leopard

obj-c和cocoa的新手,作为我的第一个(mac os x)应用程序在一个简单的游戏上工作。我有菜单视图和游戏视图:

MenuView.h /米
MenuViewController.h /米
GameView.h /米
GameViewController.h / m

我希望默认显示菜单,当点击播放按钮(在MenuView中)时,我希望菜单消失并显示游戏。我理解行动和渠道,但我不知道从哪里开始让意见交换出来。有帮助吗?看起来我需要以某种方式使我的MenuViewController与我的MainController对话?

3 个答案:

答案 0 :(得分:1)

如果您希望它们位于同一窗口并且大小相同,则可以将两个视图放入tabless选项卡视图中。只需切换选项卡即可切换哪个视图可见。

另一种方法是将它们放在不同的窗口中,并为每个窗口使用窗口控制器而不是视图控制器。除此之外,这使得游戏窗口易于用户调整,而不会影响菜单窗口的大小。

答案 1 :(得分:1)

Peter Hosey,

如果您将MenuViewController视为一种“主”视图控制器,在单击播放按钮时,您可以初始化GameViewController的实例:

- (IBAction)gameButtonClicked {

     GameViewController *game = [[GameViewController alloc] init];

     // we put the game view as the MenuViewController's view
     [self setView:game.view];
     [game release];

}

当然,您需要导入“GameViewController.h”才能访问它。

答案 2 :(得分:1)

由于你希望你的MenuViewController成为调用和照顾GameViewController的东西,我建议类似于Rafael所说的。尝试将GameViewController的实例放在Interface Builder文件中,但将其隐藏起来。当他们按下“播放”按钮激活游戏时,只需将GameViewController发送到前面并使其可见即可。这有点笨拙,但它确实有效。请记住隐藏有关菜单的所有按钮和互动。你不想在玩游戏时意外激活高分列表!

另外,我建议您查看Utility应用程序。 (它们是您在创建新项目时给出的模板类型之一。)它们是为了在两个单独的视图控制器之间切换而构建的,它可能就是您正在寻找的。

相关问题