为什么iOS 5.0不像普通的窗口应用程序? 为什么要求使用视图控制器?

我有一个iOS应用程序,我用Xcode 4.0的“基于窗口的应用程序”模板创build。 它工作得很好,它使用的是iOS 4.3 SDK。 这是一个应用程序,只需将button,标签等直接放在窗口上。 没有视图控制器 – 没有什么。

但是现在我已经升级到了Xcode 4.2(和它的iOS 5.0 SDK),并且我运行了应用程序,当这个应用程序在模拟器中启动时,这个消息被logging到控制台:

“应用程序预计在应用程序启动结束时有一个根视图控制器”

可以肯定的是,该应用程序继续工作,但这个相当麻烦的日志打印出来每次启动。

为什么发生这种情况? 为什么iOS 5.0更喜欢/请求视图控制器?

我不知道为什么消息被logging下来,但UIWindow和UIViewController之间的整合在iOS的最后几次迭代中一直在增加。 iOS 4为UIWindow添加了一个rootViewController属性。 这两个类共同pipe理视图旋转。 鉴于iOS 5引入到UIViewController的新function(特别是创build自己的容器视图控制器的能力),很明显两个类之间的关系将继续发展。 正如你所说,你的应用程序继续在iOS 5中运行,所以拥有一个根视图控制器并不是一个硬性和快速的要求。 也许有未来的iOS版本计划的function将取决于有一个视图控制器可用。

我没有任何反对他们的事情,如果iOS要我,我会使用它们。 我只是好奇上面的行为。

我把这个日志消息解释为从苹果公司向提供一个根视图控制器的一个温柔而持久的推动。 大多数应用程序已经使用视图控制器,所以这不是一个大的改变,但可能有一些应用程序没有正确地设置窗口的rootViewController属性到他们的顶级视图控制器。

你刚才连接你的“视图”与“文件所有者”…..只是删除该连接,并运行您的应用程序。点击您的看法,看到连接检查员区域,并删除我告诉我的连接..我不知道到底是什么理由..但我有这个问题,我清除。 可能是你已经使用了一些tableview或其他一些意见,所以应用程序。 需要一个视图控制器启动。如果你删除该连接,那么它将运行你只写在代码中…

让我告诉你原因。

在以前的版本中,基于窗口的应用程序被用来构build多视图的应用程序。但是在Xcode 4.2中,基于窗口的应用程序已经不存在了。 空应用程序旨在build立一个多视图程序。

基于窗口的应用程序和空应用程序的区别在于前者具有主窗口MainWindow.xib。

当程序启动时,iPhone首先build立主窗口。 MainWindow中的内容将被加载和构build。但是如果你想要更多的function,比如多视图,你还需要新build一个根视图控制器。 根视图控制器可以帮助您pipe理程序中的视图。 在新版本中,Xcode 4.2是一个根视图控制器。

在新版本中,Empty Application中没有MainWindow.xib。而是使用AppDelegate创build一个窗口。 它需要一个根视图控制器。 所以最好的方法是使用XIB为MainWindow创build一个UIViewController子类。 但在旧版本中,不需要XIB。

所以得到它? 如果没有根视图控制器,你将不会收到错误,但是如果没有这个错误,你几乎不能做任何事情。 这就是为什么警告总是出来。