添加新的导航控制器和根控制器后,Segues无法工作

时间:2014-10-30 19:34:32

标签: ios objective-c uinavigationcontroller segue uistoryboard

我刚刚继承了一个使用Storyboard + nibs的项目。

故事板将导航控制器设置为初始视图控制器,然后将第一个视图控制器设置为其根。非常简单。

我决定创建一个新的视图控制器并使其成为新的根控制器。我仍然有旧的根视图控制器,它不再是根。所以为了速度,我删除了导航控制器,选择了我的新根视图控制器,并将其嵌入到导航控制器中。

工作完美。这是我不明白的......

我的设置看起来与之前的相同,但我必须将以下内容添加到应用代理中:

  LaunchController *launch = [[LaunchController alloc] initWithNibName:@"LaunchController" bundle:nil];
  UINavigationController *navigation = [[UINavigationController alloc] initWithRootViewController:launch];

  self.window = [[UIWindow alloc] initWithFrame:[[UIScreen mainScreen] bounds]];
  [self.window setRootViewController:navigation];
  self.window.backgroundColor = [UIColor whiteColor];
  [self.window makeKeyAndVisible];

为什么我必须添加它,但之前的版本并不需要它,即使我觉得我所做的更改仍然保持设置与我之前的相同?

在整个应用程序中,performSegueWithIdentifier正在被调用,现在那些总是失败并且说'#34; Receiver没有带标识符的segue。"

如果我从app delegate中删除了上面的代码,那么我的根控制器既可以是笔记本又可以在故事板上显示在屏幕上。它加载,但你看不到任何东西。但是,现在我的所有细分都有效。

那么这里发生了什么?我意识到在创建新的导航控制器和根视图控制器时我可能搞砸了一些东西,但是我无法解决这个问题。

我花了一些时间与笔尖一起工作,而且我一直在添加上面的应用代理代码,所以我真的不明白以前的开发人员是如何做到这一点的在app delegate中没有该代码。

非常感谢任何帮助。

1 个答案:

答案 0 :(得分:0)

如果您正在使用故事板,那么您不必在App Delegate类中编写任何代码。相反,你提到你的故事板,如项目文件 - >目标 - >一般 - >部署信息 - >主界面。 Screenshot for XCode setting在这里您可以看到Main_iPhone是我项目的故事板。现在该故事板中的任何视图控制器被设置为"是初始视图控制器"将由应用程序自动为您加载。