Paras vastaus
UIWindow on luokka UIKitissa, iOS: n käyttöliittymäkehyksessä (ja tvOS: ssa ja watchOS: ssa).
Kun käynnistät sovelluksen, tavallinen prosessi näyttää jotain on luoda UIWindow, luoda UIViewController näkymällä, jonka haluat näyttää, ja asettaa sitten UIWindowin ”root view -ohjain” UIViewControlleriksi.
Jos teet kuvakäsikirjoitukseen perustuvaa sovellusta, tämä tehdään sinulle. Voit asettaa pääkäyttöliittymän ja .storyboard-tiedosto ladataan juurinäkymän ohjaimeksi. Voit käyttää tätä UIWindow-sovellusta AppDelegatessa.
Jos et käytä kuvakäsikirjoituksia, tarvitset jotain tällaista koodia.
var window: UIWindow?
func application(\_ application: UIApplication, didFinishLaunchingWithOptions launchOptions: [UIApplicationLaunchOptionsKey: Any]?) -> Bool {
window = UIWindow(frame: UIScreen.main.bounds)
let vc = CustomViewController()
window?.rootViewController = vc
window?.makeKeyAndVisible()
}
AppDelegaten didFinishLaunching-funktiossa UIWindowin luomiseksi ja juurinäkymän ohjaimen asettamiseksi sovelluksellesi. Huomaa, että jotta UIWindow olisi näkyvissä ruudulla, sinun on vain asetettava se näkyväksi sen sijaan, että lisäät sen alikatselmaksi tai sijoitat johonkin toiseen hierarkiaan.
Yleensä näyttää enemmän näkymäohjaimia muita kuin juurinäkymäohjain, voit esittää ne modaalisesti tai käyttää navigointi- / välilehtiohjainta, joten ei ole oikeastaan paljon syitä luoda enemmän ikkunoita sovellukseesi.
Yksi syy voi olla hälytyksen näyttäminen tai sinulla on sovelluksen sisäinen ilmoitusjärjestelmä, jossa haluat näyttää käyttöliittymäelementin kaiken muun sovelluksesi yläpuolella (jopa näppäimistön ja joidenkin järjestelmän hälytysten mielestäni).
Tai jos sovelluksesi todella hyödyntää kaksi näyttöä (eli AirPlayn kautta), sinun on luotava uusi UIWindow, asetettava sen näyttö toissijaisen näytön näytölle, asetettava sen juurinäkymäohjain ja asetettava se näkyväksi.
Osoitteeseen suoraan toinen kysymyksesi, oletan, että voisit lisätä useita UIWindows-näkymiä ohjaimen näkymän alikatselmina (kuten UIWindow tekee alaluokan UIView), mutta se ei todellakaan ole sitä, miten niitä yleensä käytetään, enkä oikein tiedä miltä se näyttää.
Vastaa
Ensinnäkin, UIWindowilla ei ole mitään tekemistä Swiftin kanssa. Se ei ole missään muodossa osa Swift-kieltä. Se on osa Applen UIKit-kehystä, joka on tällä hetkellä oletusarvoinen käyttöliittymäkehys iOS: lle (ja joka on pian oletusarvoinen käyttöliittymäkehys MacOS: lle). UIViewController on myös osa UIKitia.
UIWindow on se, mikä sisältää sovelluksesi käyttöliittymän. Se välittää käyttäjien vuorovaikutustapahtumat näkemyksiisi. Tyypillisessä iOS-sovelluksessa on yksi UIWindow.
UIViewController ei sisällä mitään UIWindow-objektit ja se olisi huono suunnittelupäätös, jos se tekisi.
Suosittelen lukemaan ohjeet: UIKit | Applen kehittäjien dokumentaatio