初始化UISegmentedControl时出现奇怪的行为

时间:2013-07-22 13:19:50

标签: c# ios uiviewcontroller xamarin.ios

我正在编写一个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继承该类,我就会收到上述错误消息。

1 个答案:

答案 0 :(得分:0)

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

FinishedLaunching方法中添加:

if (UIDevice.CurrentDevice.CheckSystemVersion (5, 0))
{
   window.RootViewController = yourViewController;
}
else
{
   window.AddSubview (yourViewController.View);
}