使用界面生成器设置根控制器

4
当我将导航控制器拖到故事板上时,我会得到导航控制器和一个表视图控制器。我不想要这个表视图,所以我删除它,插入一个普通的视图控制器,将其类更改为例如 LoginView,右键单击并拖动:“关系根视图控制器”从导航控制器到视图控制器。
现在当我运行应用程序时,我会得到:
Application windows are expected to have a root view controller at the end of application launch

我不想通过编程来解决这个问题,因为上一次我这样做时它可以直接运行(xcode 4.2),但我现在已经升级到了4.3版本。而且,在4.2中添加导航控制器时,它默认带有一个视图控制器,而不是表格视图控制器。

导航控制器的“Is Initial View Controller”属性已设置。

6个回答

8
请尝试另一种方式。
  • 删除导航控制器
  • 选择最终视图控制器,在菜单 "Editor > Embed in > Navigation Controller" 中
  • 检查导航控制器是否已选中 "Is Initial View Controller"
  • 检查AppDelegate代码中是否没有不必要的内容, applicationDidFinish方法应为空(如果您没有在其中放置自定义代码)
  • 检查您的视图控制器是否包含 -(void)loadView 并删除该方法以避免启动时出现黑屏问题
希望有所帮助。

消除了警告,但屏幕全黑。 - chwi
你的视图控制器中是否包含 -(void)loadView 方法?如果是,删除它。 - flashfabrixx
1
控制器没有那个方法。我的解决方案是使用“单视图”而不是“空白”开始一个新项目,但我真的很想知道有什么区别。 - chwi
几周前我遇到了同样的问题,最终得出了相同的解决方案 - 即使它并不是最好的,其背后的逻辑似乎也不太清楚。 - flashfabrixx

7
在Xcode 8中:
  1. 从导航控制器上右键并拖动到视图控制器。
  2. 在弹出菜单中,在“关系Segue”部分下选择根视图控制器

4

这是一个旧帖子,但对于仍然遇到此问题的人来说。

  • 在xib中,您需要一个视图控制器和一个窗口。
  • 选择窗口并转到“连接检查器”
  • 将rootViewController与视图控制器连接起来

这应该有效,对我有用。


我该如何“将rootViewController与视图控制器连接起来”? - fishinear

2
  1. 在 Interface Builder 中选择“视图控制器”
  2. 打开“属性检查器”
  3. 选中复选框“初始视图控制器”

0
问题出在AppDelegate.m文件中的这一行代码:(BOOL)application:(UIApplication *)application didFinishLaunchingWithOptions:(NSDictionary *)launchOptions 尝试将除了return语句以外的所有内容都注释掉。当创建一个空应用程序时,这段代码会被自动插入,并干扰你在故事板中根视图控制器的初始检查。此外,在项目目标中,确保info.plist显示你的故事板为主故事板。最后,请确保在故事板视图中选中初始视图控制器并查看其属性。勾选那个小框即可。

-1
我的解决方法是使用“单视图”而不是“空白”开始一个新项目。

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接