如何动态决定转换到哪个屏幕(iOS游戏)

时间:2013-04-25 15:12:30

标签: ios xcode uiviewcontroller uistoryboardsegue

我对如何在游戏中最好地执行屏幕转换感到困惑。我需要执行以下过渡[主菜单] - > [字符选择] - > [舞台选择]

到目前为止,我使用Interface Builder从[主菜单]中的控件“单击”拖动“到[字符选择]并选择模态segue类型。但后来我意识到,在第二轮游戏中,玩家不需要再次进入[角色选择]屏幕。然后我有以下流程[主菜单] - > [舞台选择]

所以我的问题是:

1)模态转换是推荐的做法吗?我使用模态转换看到的所有示例都是弹出窗口或类似的。我不想使用导航栏,因为我认为这些不是游戏的好设计选择。

2)我在某个地方看到我不应该在这里使用segues,而是使用“presentViewController:animated:completion:”但这导致了另一组问题。

3)为了理解presentViewController ...我最终进入了苹果文档http://developer.apple.com/library/ios/#featuredarticles/ViewControllerPGforiPhoneOS/ModalViewControllers/ModalViewControllers.html 这并不能解释很多事情,

3.1)例如如何在Inteface Builder中设置Controller的NIB文件名? (我是否必须创建.xib文件)。实际上这个NIB / XIB文件非常令人困惑。

我试图将控制器类的名称传递为NIB名称,如下所示:

MyController* controller = [UIViewController alloc] initWithNibName:@"MyController"...

但我得到一个例外“无法在捆绑中加载NIB ......”

3.2)此外文档还指出我应该将controller.delegate设置为self,但UIController没有委托属性。我是否必须自己在呈现的控制器中定义委托属性?

3.3)第二个参数“bundle”怎么样,我应该总是传入'nil'还是应该传入mainBundle?

提前致谢。

1 个答案:

答案 0 :(得分:1)

您应该使用segue来调用:

- (void)performSegueWithIdentifier:(NSString *)identifier sender:(id)sender

当您想要执行[Main Menu] -> [Stage Select]转换时。在UIViewController子类中创建一个segue,对其进行配置,然后根据需要使用它。

或者,在您的视图中,您可以UIControl获得[Main Menu] -> [Character Select]

  1. 更改它执行的segue
  2. 禁用它并在启用和取消隐藏Menu->Stage segue
  3. 的控件时隐藏它