【问题标题】:Change ViewController更改视图控制器
【发布时间】:2014-09-16 19:19:46
【问题描述】:

我有一个多人游戏,我希望它在我按下菜单中的一个按钮后开始。问题是我开始多人游戏后不知道如何直接从菜单过渡到游戏。

在 ViewController.m 中

- (IBAction)multiplayer:(id)sender {
  [Nextpeer launchDashboard];
}

在 AppDelegate.m 中

-(void)nextpeerDidTournamentStartWithDetails:(NPTournamentStartDataContainer *)tournamentContainer {
  UIStoryboard *storyboard = self.storyboard;
  ArcadeView *svc = [storyboard instantiateViewControllerWithIdentifier:@"arcade"];
  [self presentViewController:svc animated:YES completion:nil];
  srandom(tournamentContainer.tournamentRandomSeed);
  [tournamentContainer tournamentIsGameControlled];
 }

我收到了

的错误

“在“AppDelegate *”类型的对象上找不到属性“故事板”和 “‘AppDelegate’没有可见的@interface声明选择器 'presentViewController:animated:completion:'"

如何使用情节提要从一个 ViewController 更改为另一个 ViewController?

通常在 cocos2d 中,我会这样做:

CCScene *gameplayScene = [CCBReader loadAsScene:@"GamePlay"];
[[CCDirector sharedDirector] replaceScene:gameplayScene];

什么是等价物?

【问题讨论】:

  • 应用加载时如何设置 self.storyboard?你为什么要为它保留财产。通常你不需要一个,你总是可以通过执行以下操作来获得它: UIStoryBoard *storyboard = [UIStoryboard storyboardWithName:@"Main_iPhone" bundle:nil];
  • 原因是因为我有 3 个故事板用于 2 个不同的 iPhone 尺寸和 1 个用于 iPad。如何更正上面的代码?
  • 首先我会尝试确保故事板被正确实例化。在您的应用程序中完成加载方法尝试执行 self.storyboard 而不仅仅是故事板(假设您有它的属性)。如果这不起作用,请在日志语句中检查以确保在 nextpeerDidTournamentStartWithDetails 方法的第一行之后故事板不为零。

标签: ios objective-c uiviewcontroller uikit nextpeer


【解决方案1】:

如何使用情节提要从一个 ViewController 更改为另一个 ViewController?

通常,您会使用 segue 从一个视图控制器切换到另一个。您可以在情节提要中创建一个转场,将其连接到一个按钮,该按钮将自动触发转场并转换到下一个视图控制器。作为转场过程的一部分,现有视图控制器将有机会为转场“准备”,此时它可以根据需要自行清理,并提供下一个视图控制器可能需要的任何信息。在-[UIViewController prepareForSegue:sender:] 的文档中阅读所有相关信息。

当然,您可以通过多种不同的方式从一个视图控制器转换到另一个视图控制器。您可以将新的视图控制器推送到导航堆栈上,在多个视图控制器之间切换标签栏控制器,呈现视图控制器,只需从窗口中删除一个视图控制器的视图层次结构并安装新的视图控制器,等等。许多可能的转场由现有的转场类型提供,但您也可以通过创建自己的转场来创建自己的自定义转场。

如果所有这些对您来说都是新的,您可能应该花一些时间阅读View Controller Programming Guide for iOS

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2012-07-26
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多