Je po vytvoření kontroléru ihned vytvořen jeho instance pohledu?
sobes.tech AI
Odpověď od AI
Ne. Instanční příklad pohledu (view) pro řídicí prvek typu UIViewController je vytvářen líně, při prvním přístupu k vlastnosti view.
UIKit nevytváří pohled ihned po inicializaci řídicího prvku za účelem optimalizace zdrojů. Pohled může být vizuálně složitý a vyžadovat hodně paměti a CPU času na jeho vytvoření. Vytvářením "líně" pouze tehdy, když je to skutečně nutné pro zobrazení na obrazovce, systém šetří zdroje.
Tento proces probíhá například, když je řídicí prvek přidán do hierarchie pohledů jiného řídicího prvku nebo okna, nebo když je explicitně volána jeho vlastnost view. Pokud je řídicí prvek inicializován, ale nikdy není zobrazen nebo použit, jeho pohled nebude vytvořen.
Životní cyklus řídicího prvku a tvorba pohledu zahrnují následující klíčové body:
init(coder:)neboinit(nibName:bundle:): Řídicí prvek je inicializován, aleviewje stálenil.- První přístup k
view: Pokud jeviewnil, systém zavolá metoduloadView(). loadView(): V této metodě vy (nebo systém podle výchozího nastavení) vytvoříte kořenový pohled řídicího prvku a přiřadíte ho vlastnostiview.viewDidLoad(): Tato metoda je volána po načtení pohledu a přiřazení k vlastnostiview. Zde obvykle dochází k nastavení podpohledů, načítání dat a dalším akcím závislým na přítomnosti pohledu.
Příklad přepsání loadView():
override func loadView() {
// Místo načítání z Storyboard/XIB nebo vytváření prázdného UIView
// vytvoříme náš vlastní vlastní pohled
let customView = CustomContentView()
view = customView
// Zde již view není `nil`
}
Je důležité pamatovat, že ve většině případů nepřepisujete přímo loadView(), ale spoléháte na standardní implementaci UIKit, která načítá pohled ze Storyboardu, XIB souboru nebo vytváří výchozí prázdný UIView. Nicméně pochopení, kdy a jak je pohled vytvářen, je klíčové.