Kedy by mala byť metóda loadView zmenená?
sobes.tech AI
Odpoveď od AI
Zmena metódy loadView by sa mala vykonať iba v prípadoch, keď nepoužívate storyboardy alebo .xib súbory na vytvorenie zobrazenia kontroléra (view). V takýchto prípadoch vytvárate celú hierarchiu zobrazení programovo v loadView, namiesto toho, aby ste umožnili UIViewController načítať ju z Interface Buildera.
V rámci loadView by ste mali:
- Vytvoriť koreňové zobrazenie (
view) pre kontrolér. - Priradiť vytvorené zobrazenie vlastnosti
self.view.
Nikdy nevolajte [super loadView] pri prepisovaní tejto metódy, pretože to môže spôsobiť nekonečnú slučku alebo iné nechcené vedľajšie efekty.
// Príklad prepisu loadView
override func loadView() {
// Vytvárame koreňové zobrazenie programovo
let newView = UIView()
newView.backgroundColor = .white
// Vytvárame a pridávame podzobrazenia
let label = UILabel()
label.text = "Ahoj z kódu!"
label.translatesAutoresizingMaskIntoConstraints = false // Vypíname Auto Resizing Mask
newView.addSubview(label)
// Nastavujeme konštrainty pre podzobrazenia
NSLayoutConstraint.activate([
label.centerXAnchor.constraint(equalTo: newView.centerXAnchor),
label.centerYAnchor.constraint(equalTo: newView.centerYAnchor)
])
// Priraďujeme vytvorené zobrazenie vlastnosti view kontroléra
self.view = newView
}
Použitie loadView na programové vytváranie UI:
| Výhody | Nevýhody |
|---|---|
| Plná kontrola nad vytváraním UI. | Viac kódu na napísanie. |
| Možnosť vytvárať zložité, dynamické UI. | Ťažšie vizuálne odhadnúť štruktúru UI. |
| Potenciálne lepší výkon pre veľmi zložité UI. | Menej intuitívne pre spoluprácu na UI. |
Vo väčšine moderných iOS aplikácií je preferovaným prístupom použitie storyboardov alebo .xib súborov, kde sa loadView volá automaticky na načítanie zobrazenia z týchto zdrojov. Prepisovanie loadView je nižšia úroveň prístupu, ktorý by sa mal používať iba v prípade, že je to naozaj nevyhnutné.