2016-05-08 27 views
4

Ich habe das schon mit:Wie kann die Ansicht in der Hierarchie der Ansichten in Swift hinzugefügt werden?

UIApplication.sharedApplication().keyWindow?.rootViewController!.view.addSubview(self.customView) 

Um einen modalen Blick auf alle Ansichten in der Ansichtshierarchie in App hinzuzufügen.

Aber das gibt mir ein Problem. Es fügt Unteransicht manchmal wie erwartet hinzu, aber manchmal funktioniert es nicht. In diesem Fall wird dies nicht funktionieren und was ist die beste Möglichkeit, modale Ansicht in Ansichtshierarchie wie UIAlertView hinzuzufügen.

+0

Was sind diese Situationen, wenn es _doesn_ funktioniert? Haben Sie die Ansichtshierarchie überprüft? Haben Sie für die hinzugefügte benutzerdefinierte Ansicht einen passenden "Rahmen" festgelegt? –

+0

Eigentlich passiert es nur manchmal. Und ich habe es versäumt, das Problem im Simulator neu zu erstellen. Aber das Problem tritt auf, wenn ich einen Build für das Telefon nicht während des Debuggens, sondern nach dem Zufallsprinzip erstellen. Daher konnte ich die Ansichtshierarchie nicht überprüfen. –

+0

Theoritisch. Wenn wir der Ansicht von rootViewController in Keywindow eine Ansicht hinzufügen, sollte sie an der Spitze der Hierarchie stehen, oder? –

Antwort

4

Je nachdem, was gerade passiert, kann es mehrere UIWindows gleichzeitig geben. Wenn zum Beispiel eine Systemwarnung angezeigt wird, haben Sie zwei separate Fenster (eines für Ihren View-Controller, eines für den Alarm selbst).
Ein ähnliches Beispiel kann für die Systemtastatur erstellt werden. Wenn die Tastatur den Fokus hat, ist das Ihr KeyWindow.

Eine Möglichkeit sicherzustellen, dass Sie die Unteransicht über alle Fenster hinzufügen, könnte sein: UIApplication.sharedApplication().windows.last?.addSubview(yourSubView).

Ich habe auch Leute mit dem Anwendungsdelegaten gesehen, mit: UIApplication.sharedApplication().delegate?.window.