2016-06-04 36 views
0

ich bekomme diesen Fehler etwa 5 oder 10 Sekunden nach dem Erstellen eines neuen UIWindow und macht es Schlüssel und sichtbar.Fehler beim Erstellen und machen Schlüssel und sichtbar ein neues UIWindow

unexpected nil window in _UIApplicationHandleEventFromQueueEvent, _windowServerHitTestWindow: (null) 

Es bringt mich dann wieder auf die alte UIWindow. Mein Code ist unten:

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

Alles, was ich wirklich zu tun versuche, ist aus der Hierarchie brechen und einen neuen Stapel von View-Controller über die UINavigationCOntroller starten. Lass es mich wissen, danke!

+0

Gibt es einen Grund, warum Sie dies tun müssen? Es scheint eine schlechte Idee zu sein. – davetw12

+0

@ davetw12 was genau? Mein Code oder möchte ich aus der Hierarchie der View-Controller ausbrechen? – imageobject

+0

Ich möchte mich von der Hierarchie lösen. – davetw12

Antwort

0
var window = new UIWindow(); 

Ihre UIWindow eine lokale Variable ist, müssen Sie irgendwo eine Referenz halten, machen es zu einem Klassenstufe var und Ihre Probleme sollten weggehen (das gleiche wie Ihre statische AppDelegate.NavController funktionieren würde).

Als schnellen Test, setzen Sie einfach eine GC.Collect(); irgendwo nach der window.MakeKeyAndVisible() und starten Sie mit den Bedienelementen auf Ihrem MainViewController und warten auf den Spaß zu beginnen. ;-)

Update:

Ich habe erkannt, dass Sie die CGRect aus dem aktuellen Fenster wieder verwendet, erstellen Sie eine neue, eine saubere Trennung haben, falls Sie die Bildschirmausrichtung ändern, GLES Größe, etc ..

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