Ce este UIWindow în Swift? Un singur controler de vizualizare conține mai multe ferestre?


Cel mai bun răspuns

UIWindow este o clasă în UIKit, cadrul UI pentru iOS (și tvOS și watchOS).

Când lansați o aplicație, procesul obișnuit pentru a afișa ceva este să creați un UIWindow, să creați un UIViewController cu vizualizarea pe care doriți să o afișați, apoi setați „controlerul de vizualizare rădăcină” al UIWindow la UIViewController.

Dacă creați o aplicație bazată pe storyboard, acest lucru este făcut pentru dvs. Puteți seta „Interfața principală” și acel fișier .storyboard va fi încărcat ca controler de vizualizare rădăcină. Puteți accesa acest UIWindow în AppDelegate.

Dacă nu utilizați storyboard-uri, aveți nevoie de ceva de genul acestui cod

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()

}

în funcția didFinishLaunching a AppDelegate pentru a crea UIWindow și a seta controlerul său de vizualizare rădăcină la aplicația dvs. Rețineți că pentru a face UIWindow vizibilă pe ecran, trebuie doar să o setați ca vizibilă, spre deosebire de a o adăuga ca subvizualizare sau a o plasa într-o altă ierarhie.

De obicei pentru a afișa mai multe controlere de vizualizare altele decât controlerul de vizualizare rădăcină, le puteți prezenta în mod mod sau puteți utiliza un controler de navigare / filă, deci nu există într-adevăr o mulțime de motive pentru a crea mai multe ferestre în aplicația dvs.

Un motiv ar putea fi afișarea unei alerte sau aveți un sistem de notificare în aplicație, unde doriți să afișați un element de interfață de utilizare deasupra tuturor celorlalte aplicații (deasupra chiar a tastaturii și a unor alerte de sistem cred).

Sau dacă aplicația dvs. profită de fapt de două ecrane (adică prin AirPlay), atunci ar trebui să creați un nou UIWindow, să setați ecranul pe cel al ecranului secundar, să setați controlerul de vizualizare rădăcină, apoi să îl setați ca vizibil.

Pentru a adresa direct a doua întrebare, presupun că ați putea adăuga mai multe UIWindows ca subvizualizări ale vizualizării unui controler de vizualizare (ca UIWindow face subclasa UIView), dar cu siguranță nu așa sunt folosite de obicei și nu știu cu adevărat cum ar arăta asta.

Răspunde

În primul rând, UIWindow nu are nimic de a face cu Swift. Nu face parte din limbajul Swift sub nicio formă sau formă. Face parte din cadrul UIKit al Apple, care este în prezent cadrul UI implicit pentru iOS (și care va fi în curând cadrul UI implicit pentru MacOS). UIViewController face, de asemenea, parte din UIKit.

Un UIWindow este ceea ce conține interfața de utilizare a aplicației. Este ceea ce trimite evenimentele de interacțiune a utilizatorilor către vizionările dvs. O aplicație iOS tipică are un singur UIWindow.

Un UIViewController nu conține niciunul UIWindow obiecte și ar fi o decizie de proiectare greșită dacă ar face acest lucru.

Vă recomand să citiți documentația: UIKit | Documentația pentru dezvoltatori Apple

Lasă un răspuns

Adresa ta de email nu va fi publicată. Câmpurile obligatorii sunt marcate cu *