我正在编写一个MonoTouch应用程序,我正在尝试将UISegmentedControl添加到View(以编程方式不是通过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类,并且app运行正常。我已经尝试评论各种不同的UIViewControllers,每次运行正常,所以没有一个视图控制器似乎是问题。就好像我已经对我可以拥有的视图控制器的数量进行了某种限制。
这可能吗?如果不是,问题可能是什么?
P.S。这可能与我之前提出的问题有关:Error when adding UITabBarController
修改
在FinishedLaunching方法中,我有这段代码:
_window = new UIWindow(UIScreen.MainScreen.Bounds);
_window.RootViewController = _navigationController;
_window.MakeKeyAndVisible();
我在iOS 6.1版本中运行它。
我已经尝试评论任何类,而不仅仅是从UIViewController继承的类,并且应用程序运行正常。也许这是一个记忆问题
编辑2
我尝试从受影响的位置移除视图和控制器,然后再次构建它们并在视图继承自UIView时将其向下钻取。如果我在UIViewController中有这个代码,并且一个类将用作UIView(但实际上并没有继承它),那么应用程序运行没有问题。一旦我从UIView继承该类,我就会收到上述错误消息。
答案 0 :(得分:0)
该错误与UISegmentedControl
无关。请检查您是否在代码中提到了应用程序的rootview。如果不这样做。
在FinishedLaunching
方法中添加:
if (UIDevice.CurrentDevice.CheckSystemVersion (5, 0))
{
window.RootViewController = yourViewController;
}
else
{
window.AddSubview (yourViewController.View);
}