在没有ViewController的情况下制作应用程序时如何使用RootViewController?

时间:2012-01-30 02:34:25

标签: objective-c ios xcode

我正在尝试从没有viewController的教程中创建一个简单的应用程序。所有代码都在AppDelegate中。我在xcode 4.2上,我收到了这个错误:

Applications are expected to have a root view controller at the end of application launch

我不知道如何处理这件事。有一些博客有修复,但没有一个适合我,我真的想了解这里发生了什么。而且,如何解决它。

我的视图包含一些按钮和标签。但我没有" ViewController"。我的项目中包含的文件是:AppDelegate.h,AppDelegate.m和Window.xib。没有ViewController.h,ViewController.m

**编辑**

我最终使用基于视图的应用程序制作应用程序'相反,只需将所有逻辑从app委托移动到视图控制器。所以,我本身并没有真正解决问题。该应用程序现在工作。谢谢你的帮助

4 个答案:

答案 0 :(得分:2)

不可能有一个没有视图控制器的iOS应用程序。你总是可以创建一个简单的视图控制器,即

[[UIWindow alloc] initWithFrame:UIScreen.mainScreen.bounds].rootViewController =
  [[[UIViewController alloc] init] autorelease];

答案 1 :(得分:1)

虽然我同意可能有解决方法,但另一个需要解决的问题是:为什么想要没有视图的应用?即使它被设计为在后台运行并且没有可视界面,至少可以创建一个简单的视图来显示应用程序名称和版本,一个很大的图标,也许还有一个状态。这种空闲屏幕使用非常少的系统资源,特别是当应用程序背景化时,但改善了应用程序的整体体验。

答案 2 :(得分:1)

听起来你正在看一个旧教程。 UIWindow在iOS4中获得了rooViewController属性。我相信在iOS5中需要帮助保持控制器层次结构和查看层次结构与添加自定义容器控制器同步(并修复一个角落案例,其中替换UIWindow的“根控制器”可能会阻止方向更改传播)。 2011年的WWDC演示文稿详细解释了这一点。我认为是Session 102,实现UIViewController Containment

当天结束时,没有充分的理由不拥有根视图控制器。 Apple希望能够在未来的API中假设它存在。如果您正在查看的教程没有考虑到这一点,那就破了。

答案 3 :(得分:0)

如果您将部署目标设置为4.3并在iPhone 4.3模拟器上运行,则不会收到警告。

要安装iOS 4.3模拟器,请转到Xcode>偏好>下载。