创建和创建新UIWindow的密钥和可见时出错

时间:2016-06-04 20:32:12

标签: c# ios xamarin uinavigationcontroller uiwindow

我在创建新的UIWindow并将其设为关键且可见后约5或10秒内收到此错误。

unexpected nil window in _UIApplicationHandleEventFromQueueEvent, _windowServerHitTestWindow: (null)

然后它将我带回旧的UIWindow。我的代码如下:

actionButton.TouchUpInside += delegate
{
    var window = new UIWindow();
    AppDelegate.NavController = new UINavigationController(new MainViewController());
    window.RootViewController = AppDelegate.NavController;
    window.Frame = UIScreen.MainScreen.Bounds;
    window.MakeKeyAndVisible();
};

我真正想做的就是从层次结构中断,并通过UINavigationCOntroller启动一堆新的视图控制器。让我知道,谢谢!

1 个答案:

答案 0 :(得分:0)

var window = new UIWindow();

您的UIWindow是一个局部变量,您需要在某处保留对它的引用,使其成为类级别var并且您的麻烦应该消失(与您的静态AppDelegate.NavController相同)。

作为快速测试,只需在GC.Collect();之后的某处放置一个window.MakeKeyAndVisible(),然后开始使用MainViewController上的控件,等待开始的乐趣。 ; - )

更新:

我刚刚意识到您重复使用当前窗口中的CGRect,创建一个新的,以便在您更改屏幕方向,GLES大小等时进行清晰分离。

window.Frame = new CGRect(0, 0, UIScreen.MainScreen.Bounds.Width, UIScreen.MainScreen.Bounds.Height + 100);