0

我正在编写一个 MonoTouch 应用程序,并且正在尝试将 UISegmentedControl 添加到视图(以编程方式而不是通过 IB)。我不断收到以下错误消息:

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

这很奇怪,因为 UISegmentedControl 与 Window 根视图控制器无关。最后,我将代码一直减少到变量的初始化:

// This code appears in a class which inherits from UIView
var segmentedControl = new UISegmentedControl ();

我尝试将此代码放在从 UIViewController 继承的类中,并且发生了相同的行为。我什至尝试将它放入 AppDelegate 但仍然显示相同的错误。

注意:运行此代码时,我正在 iPad 设备上进行调试

在玩耍之后,我最终注释掉了我拥有的一个随机 UIViewController 类,并且应用程序运行良好。我已经尝试注释掉各种不同的 UIViewControllers 并且每次它运行良好,所以没有一个视图控制器似乎是问题所在。就好像我已经达到了我可以拥有的视图控制器数量的某种限制。

这可能吗?如果不是,问题可能是什么?

PS 这可能与我在这里提出的先前问题有关:添加 UITabBarController 时出错

编辑

在 FinishedLaunching 方法中,我有以下代码:

_window = new UIWindow(UIScreen.MainScreen.Bounds);
_window.RootViewController = _navigationController;
_window.MakeKeyAndVisible();

我在 iOS 6.1 版中运行它。

从那以后,我尝试注释掉任何类,而不仅仅是从 UIViewController 继承的类,并且应用程序运行良好。可能是内存问题

编辑 2

我尝试从受影响的地方删除视图和控制器,然后再次构建它们,并将其深入到视图从 UIView 继承的时间。如果我在 UIViewController 中有该代码和一个将用作 UIView 的类(但实际上不是从它继承),那么应用程序将毫无问题地运行。一旦我从 UIView 继承该类,我就会收到上述错误消息。

4

1 回答 1

0

该错误与UISegmentedControl. 请检查您是否在代码中提到了应用程序的根视图。如果不这样做。

FinishedLaunching方法中添加:

if (UIDevice.CurrentDevice.CheckSystemVersion (5, 0))
{
   window.RootViewController = yourViewController;
}
else
{
   window.AddSubview (yourViewController.View);
}
于 2013-07-22T13:36:21.680 回答