Aplikacja UIApplication ma metodę keyWindow
, jednak jeśli wyświetli się widok alertu, spowoduje to powrót do okna widoku alertu, a nie do głównego okna aplikacji.Pobierz główne okno aplikacji
Jak mogę uzyskać główne okno aplikacji?
Aplikacja UIApplication ma metodę keyWindow
, jednak jeśli wyświetli się widok alertu, spowoduje to powrót do okna widoku alertu, a nie do głównego okna aplikacji.Pobierz główne okno aplikacji
Jak mogę uzyskać główne okno aplikacji?
UIApplicationDelegate
zwykle ma odniesienie do „głównego okna”:
[[[UIApplication sharedApplication] delegate] window];
Ponadto UIApplication
posiada szereg okien [[UIApplication sharedApplication] windows]
.
Zobacz UIApplication Class Reference.
Jest to opcjonalne, ponieważ delegat nie jest to? Mam nadzieję na bardziej "konkretny" sposób. –
Zobacz moją aktualizację mojej odpowiedzi. – Espresso
[[[[UIApplication shareApplication] delegate] window] - działa poprawnie. –
nie jestem w 100% pewien, że to działa w każdym przypadku, ale to powinno działać:
UIWindow *mainWindow = [UIApplication sharedApplication].windows[0];
Okna są sortowane tyłu do przodu tak główne okno powinno być zawsze pod indeksem 0.
Powinieneś zadzwonić do okna [[[UIApplication sharedApplication]] firstObject] 'aby uniknąć wyjątku poza granicami, jeśli nie ma okien (inaczej nie byłoby żadnych okien, ale dobrym zwyczajem jest unikanie tych – michaellindahl
@michaellindahl right – cmp
UIApplication *application = [UIApplication sharedInstance];
NSarray *appWindows = [NSArray arrayWithArray:application.windows];
UIWindow *mainWindow = [appWindows objectAtIndex:0];
Nie jestem pewien, ale może to pomóc.
w Swift:
UIApplication.sharedApplication().delegate?.window
Dla mnie było przedstawienie popViewController
self.presentViewController(popViewController, animated: true, completion: nil)
a następnie w viewDidLoad()
tego popViewController byłem dodając podrzędny, to powoduje błąd w konsola i błąd wyświetlania. Muszę więc znaleźć inne rozwiązanie, które sprawi, że będzie działało. Mam nadzieję że to pomoże.
Swift 3
if let window = NSApplication.shared().windows.first {
// you can now modify window attributes
}
Powiedział 'UIApplication', a nie' NSApplication', jest oznaczony jako iOS – fpg1503
Gdybym miał dolara za każdym razem, kiedy to się zdarzyło (ludzie odpowiadający na pytania Cocoa z odpowiedziami Cocoa Touch), byłbym bogatym człowiekiem.:) Wytnij Teda trochę luzu. :) –
Swift 3.0 wersja rmaddy's answer:
let window = UIApplication.shared.windows.first
ja też powinien dodać, że od iOS 8.0 UIAlertController
zastąpił UIAlertView
i będąc kontrolerem widoku można już zmierzyć się z kwestią nowych tworzonych okien.
Swift 3
class func sharedInstance() -> AppDelegate{
return UIApplication.shared.delegate as! AppDelegate
}
można proszę bardziej skomplikowane, co starasz ..? –
spójrz na to pytanie, które może Ci pomóc: - http://stackoverflow.com/questions/7871241/is-a-mainwindow-xib-truly-eded-in-ios-application –