实现iPhone游戏的主菜单-如何返回主菜单?
我为这篇冗长的帖子道歉,我希望这对其他人来说是有意义的 我编写了一个iPhone游戏(Quartz 2d),它使用以下结构:实现iPhone游戏的主菜单-如何返回主菜单?,iphone,xcode,uiviewcontroller,quartz-2d,Iphone,Xcode,Uiviewcontroller,Quartz 2d,我为这篇冗长的帖子道歉,我希望这对其他人来说是有意义的 我编写了一个iPhone游戏(Quartz 2d),它使用以下结构: App delegate加载名为gameviewcontroller的视图控制器及其关联视图 在“查看确实加载”方法中,gameviewcontroller启动并启动游戏控制器类(NSObject)。它还启动游戏控制器中“游戏循环”方法的计时器。最后,它告诉游戏控制器使用与gameview控制器相同的视图(这是一个自定义UIView) 这一切都很好。我现在正在尝试集成
- App delegate加载名为gameviewcontroller的视图控制器及其关联视图
- 在“查看确实加载”方法中,gameviewcontroller启动并启动游戏控制器类(NSObject)。它还启动游戏控制器中“游戏循环”方法的计时器。最后,它告诉游戏控制器使用与gameview控制器相同的视图(这是一个自定义UIView)
- 创建了一个名为“主菜单”的新视图控制器,该控制器带有一个关联的NIB。在NIB中,我创建了带有“开始”按钮的主菜单
- 更改应用程序委托以加载主Manu NIB并显示其视图
- 设置一种方法,以便按下按钮后加载gameviewcontroller(有效启动游戏)
Martin如果您的菜单对象仍然存在,只需调用其“dissmisModalViewController”。 例如[[main menu getInstance]dismissModalViewControllerAnimated:YES];其中getInstance返回您的对象或将其作为属性存储在GameController中,因此当您从主菜单或GameViewController创建GameController时,只需将自身指定为其属性gameInstance.MainMenu=self 如何制作getInstance方法: 您可以使用Singleton模式(您可以从apple dev站点获得一个),或者如果您手动创建MainMenu,您可以在某个全局变量中记住self,getInstance将是类方法,类似这样:
@interface MainMenu : UIViewController
{
}
+ (MainMenu*) getInstance;
@end
以及在实施中
MainMenu *singleInstance;
@implementation MainMenu
- (id)init
{
if((self = [super init]))
{
singleInstance = self;
} return self;
}
+ (MainMenu*)getInstance
{
return singleInstance;
}
@end;
希望这有帮助
Krzysztof ZabłockiKrzysztof-谢谢你-我感谢你的回答。你能为我澄清一下我将如何编写getInstance方法吗?好的-我将尝试一个单例-我的应用程序中已经有了这些方法。如果我使用([[MainMenu getInstance]dismissModalViewController];),这会从GameController调用菜单吗?看起来会将其关闭而不会调用?如果您从主菜单中显示GameViewController(其中包含一些GameController),则可以调用两个[Main Menu DismissModalViewController激活:是]或[GameViewController DismissModalViewController激活:是](因为如果在modalViewController上调用,它会被转发到父级)这样我就可以从GameController上调用[GameViewController dismissModalViewControllerAnimated:YES]?它认为我昨天尝试了这个,得到了“GameViewController可能不会响应dismissModalViewController”-它也拒绝编译。我将尝试通过[Main Menu dismissModalViewControllerAnimated:是]。感谢您的帮助。