【问题标题】:Why doesn’t iOS 5.0 like plain window applications? Why does it request that view controllers be used?为什么 iOS 5.0 不喜欢纯窗口应用程序?为什么它要求使用视图控制器?
【发布时间】:2011-12-27 16:29:12
【问题描述】:

我有一个使用 Xcode 4.0 的“基于窗口的应用程序”模板创建的 iOS 应用程序。它当时运行良好,并且使用的是 iOS 4.3 SDK。这是一个简单地将按钮、标签等直接放在窗口上的应用程序。没有视图控制器——什么都没有。

但现在我已经升级到 Xcode 4.2(及其 iOS 5.0 SDK)并运行应用程序,当应用程序在模拟器中启动时,此消息会记录到控制台:

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

可以肯定的是,该应用程序继续运行,但每次启动时都会打印出这个相当麻烦的日志。

为什么会这样?为什么 iOS 5.0 更喜欢/请求视图控制器?

【问题讨论】:

  • 请问您为什么不想使用视图控制器?它们在您将遇到的大部分 iOS 代码中非常方便且常见。
  • 我对它们没有任何反对意见,如果 iOS 需要我,我会使用它们。我只是对上述行为感到好奇。

标签: ios cocoa-touch


【解决方案1】:

我不知道为什么要记录这条消息,但在 iOS 的最后几次迭代中,UIWindow 和 UIViewController 之间的集成一直在增加。 iOS 4 向 UIWindow 添加了rootViewController 属性。这两个类共同管理视图旋转。鉴于 iOS 5 为 UIViewController 引入的新功能(特别是创建自己的容器视图控制器的能力),很明显这两个类之间的关系将继续发展。正如您所说,您的应用程序继续在 iOS 5 中运行,因此拥有一个根视图控制器还不是硬性要求。也许未来的 iOS 版本中计划了一些功能,这取决于是否有可用的视图控制器。

我对它们没有任何反对意见,如果 iOS 需要,我会使用它们 我也是。我只是对上述行为感到好奇。

我将记录的消息解释为 Apple 对提供根视图控制器的温和但持久的推动。大多数应用程序已经使用了视图控制器,所以这不是一个大的变化,但可能有许多应用程序没有正确地将窗口的rootViewController 属性设置为它们的顶级视图控制器。

【讨论】:

  • +1 通过希望窗口具有根视图控制器,底层代码可以安全地做出一些假设,使 UIKit 工程师的工作变得更容易。
【解决方案2】:

您刚刚将您的“视图”与“文件所有者”连接......只需删除该连接并运行您的应用程序。单击您的视图并查看连接检查器区域并删除我告诉的那个连接..我没有确切地知道什么原因..但我有这个问题,我清除了。 可能是您在其中使用了一些 tableview 或其他一些视图。所以应用程序。需要一个视图控制器来启动。如果您删除该连接,那么它将只运行您在代码中编写的内容...

【讨论】:

  • @Enchilada 您是否刚刚查看了我的答案以删除您的错误“应用程序在应用程序启动结束时应具有根视图控制器”...?????
【解决方案3】:

让我告诉你原因。

在之前的版本中,基于窗口的应用程序用于构建多视图应用程序。但是在 Xcode 4.2 中,基于窗口的应用程序不再存在。 Empty Application旨在建立一个多视图程序。

Window-based Application 和 Empty Application 的区别在于前者有一个主窗口 MainWindow.xib。

程序启动时,iPhone首先建立主窗口。 MainWindow 中的内容将被加载和构建。但是如果您想要更多功能,例如多视图,您仍然需要新建一个根视图控制器。根视图控制器可以帮助管理程序中的视图。在新版本 Xcode 4.2 中,需要一个根视图控制器。

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

所以明白了吗?如果没有根视图控制器,您不会收到错误消息,但如果没有根视图控制器,您几乎无法做任何事情。这就是警告总是出现的原因。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2011-06-27
    • 1970-01-01
    • 2015-08-06
    • 1970-01-01
    • 2011-11-16
    • 2021-10-15
    • 2016-11-04
    • 2012-10-25
    相关资源
    最近更新 更多