webentwicklung-frage-antwort-db.com.de

Holen Sie sich das Hauptfenster der Anwendung

UIApplication hat eine Methode keyWindow. Wenn jedoch eine Warnmeldungsansicht angezeigt wird, wird das Fenster der Warnmeldungsansicht und nicht das Hauptfenster der Anwendung zurückgegeben.

Wie erhalte ich das Hauptfenster der App?

26
Jonathan.

Die UIApplicationDelegate hat normalerweise einen Verweis auf das "Hauptfenster":

[[[UIApplication sharedApplication] delegate] window];

Außerdem hat UIApplication ein Array von Fenstern [[UIApplication sharedApplication] windows].

Siehe die UIApplication-Klassenreferenz .

50
Espresso

Ich bin nicht zu 100% sicher, dass dies in jedem Fall funktioniert, aber das sollte funktionieren:

UIWindow *mainWindow = [UIApplication sharedApplication].windows[0];

Die Fenster sind von hinten nach vorne angeordnet, daher sollte das Hauptfenster immer auf Index 0 stehen.

8
rmaddy

Swift 3.0 Version von rmaddys Antwort :

let window = UIApplication.shared.windows.first

Ich sollte auch hinzufügen, dass UIAlertController seit ___ VariablenUIAlertView ersetzt wurde und Sie als Ansichtscontroller nicht mehr mit dem Problem der Erstellung neuer Fenster konfrontiert sind.

4
fpg1503
UIApplication *application = [UIApplication sharedInstance];
NSarray *appWindows = [NSArray arrayWithArray:application.windows];
UIWindow *mainWindow = [appWindows objectAtIndex:0];

Ich bin mir nicht sicher, aber das könnte helfen.

3
RKY

In Swift:

UIApplication.sharedApplication().delegate?.window
3
Glauco Neves

Für mich präsentierte ich eine popViewController

self.presentViewController(popViewController, animated: true, completion: nil)

und dann in der viewDidLoad() dieses popViewController ich fügte eine Unteransicht hinzu , dies verursacht den Fehler in der Konsole und einen Anzeigefehler. Also muss ich eine andere Lösung finden, damit es funktioniert. Hoffe das hilft.

0
AnthonyR

Swift 3

    if let window = NSApplication.shared().windows.first {
        // you can now modify window attributes
    }
0
Ted Lowery