Sobes.tech
Middle

Ar iškart po valdiklio sukūrimo sukuriamas ir jo vaizdas?

sobes.tech AI

Atsakymas iš AI

Ne. Peržiūros pavyzdys (view) UIViewController tipo valdikliui kuriamas vėliau, pirmą kartą kreipiantis į view savybę:

UIKit nesukuria peržiūros iškart po valdiklio inicializavimo, siekiant optimizuoti išteklius. Peržiūra gali būti vizualiai sudėtinga ir reikalauti daug atminties bei procesoriaus laiko jos kūrimui. Ji kuriama "vilkinant" — tik tada, kai ji tikrai reikalinga ekrane parodyti, sistema taupo išteklius.

Šis procesas vyksta, pavyzdžiui, kai valdiklis pridedamas prie kito valdiklio ar lango peržiūros hierarchijoje arba kai jo view savybė aiškiai iškviečiama. Jei valdiklis inicializuotas, bet niekada nerodomas ar nenaudojamas, jo peržiūra nebus sukurta.

Valdiklio gyvavimo ciklas ir peržiūros kūrimas apima šiuos pagrindinius momentus:

  1. init(coder:) arba init(nibName:bundle:): Valdiklis inicializuojamas, bet view dar nil.
  2. Pirmas kreipimasis į view: Jei view yra nil, sistema iškviečia loadView() metodą.
  3. loadView(): Šiame metode jūs (arba sistema pagal numatytuosius nustatymus) sukuriate valdiklio pagrindinį peržiūros elementą ir priskiriate jį view savybei.
  4. viewDidLoad(): Šis metodas iškviečiamas po to, kai peržiūra įkelta ir priskirta view. Čia dažnai vyksta vidinių peržiūrų konfigūracija, duomenų įkėlimas ir kitos su peržiūra susijusios veiklos.

Pavyzdys loadView() perkėlimo:

override func loadView() {
    // Vietoje įkėlimo iš Storyboard/XIB arba tuščio UIView kūrimo
    // kuriame savo unikalų peržiūros elementą
    let customView = CustomContentView()
    view = customView
    // Čia view jau nėra `nil`
}

Svarbu prisiminti, kad daugeliu atvejų jūs tiesiogiai neperrašysite loadView(), o pasikliausite UIKit standartine įgyvendinimo schema, kuri įkelia peržiūrą iš Storyboard, XIB failo arba sukuria tuščią UIView kaip numatytąjį. Tačiau svarbu suprasti, kada ir kaip kuriama peržiūra.