Sobes.tech
Middle

Vai tūlīt pēc kontroliera izveides tiek izveidots tā skats?

sobes.tech AI

Atbilde no AI

Nē. Skata piemērs (view) UIViewController tipa kontrolierim tiek izveidots vēlāk, pirmo piekļuvi view īpašībai:

UIKit neveido skatu nekavējoties pēc kontroliera inicializācijas, lai optimizētu resursus. Skats var būt vizuāli sarežģīts un prasīt daudz atmiņas un procesora laika tā izveidei. To "vilcina" — tikai tad, kad tas patiešām ir nepieciešams ekrānā parādīšanai, sistēma taupa resursus.

Šis process notiek, piemēram, kad kontrolieris tiek pievienots cita kontroliera vai loga skatu hierarhijā vai kad tā view īpašība tieši tiek izsaukta. Ja kontrolieris ir inicializēts, bet nekad netiek parādīts vai izmantots, tā skats netiks izveidots.

Kontroliera dzīves cikls un skata izveide ietver šādus galvenos punktus:

  1. init(coder:) vai init(nibName:bundle:): Kontrolieris tiek inicializēts, bet view vēl ir nil.
  2. Pirmais piekļūšana view: Ja view ir nil, sistēma izsauc loadView() metodi.
  3. loadView(): Šajā metodē jūs (vai sistēma pēc noklusējuma) izveidojat kontroliera galveno skatu un piešķirat to view īpašībai.
  4. viewDidLoad(): Šī metode tiek izsaukta pēc tam, kad skats ir ielādēts un piešķirts view. Šeit parasti notiek iekšējo skatu konfigurācija, datu ielāde un citas ar skatu saistītas darbības.

loadView() pārrakstīšanas piemērs:

override func loadView() {
    // Vietā, lai ielādētu no Storyboard/XIB vai izveidotu tukšu UIView
    // mēs izveidojam savu unikālo skatu
    let customView = CustomContentView()
    view = customView
    // Šeit view jau nav `nil`
}

Svarīgi atcerēties, ka lielākajā daļā gadījumu jūs tieši nepārrakstīsiet loadView(), bet uzticēsieties UIKit standarta realizācijai, kas ielādē skatu no Storyboard, XIB faila vai izveido tukšu UIView kā noklusējumu. Tomēr ir būtiski saprast, kad un kā tiek izveidots skats.