Sobes.tech
Middle+

Kdy by měla být metoda loadView změněna?

sobes.tech AI

Odpověď od AI

Změna metody loadView je nutná pouze tehdy, když ne používáte storyboardy nebo soubory .xib k vytvoření pohledu řadiče (view). V takových případech vytváříte celou hierarchii pohledů programově v loadView, místo aby UIViewController načítal její z Interface Builder.

Uvnitř loadView byste měli:

  1. Vytvořit kořenový pohled (view) pro řadič.
  2. Přiřadit vytvořený pohled vlastnosti self.view.

Nikdy nevoláte [super loadView] při přepisování této metody, protože to může způsobit nekonečnou smyčku nebo jiné nežádoucí vedlejší efekty.

// Příklad přepsání loadView
override func loadView() {
    // Programově vytvořit kořenový pohled
    let newView = UIView()
    newView.backgroundColor = .white

    // Vytvořit a přidat podpohledy
    let label = UILabel()
    label.text = "Ahoj z kódu!"
    label.translatesAutoresizingMaskIntoConstraints = false // Vypnout Auto Resizing Mask
    newView.addSubview(label)

    // Nastavit omezení pro podpohledy
    NSLayoutConstraint.activate([
        label.centerXAnchor.constraint(equalTo: newView.centerXAnchor),
        label.centerYAnchor.constraint(equalTo: newView.centerYAnchor)
    ])

    // Přiřadit vytvořený pohled vlastnosti view řadiče
    self.view = newView
}

Použití loadView pro programové vytváření UI:

Výhody Nevýhody
Plná kontrola nad tvorbou UI. Více kódu k napsání.
Možnost vytvářet složité, dynamické UI. Těžší vizuálně posoudit strukturu UI.
Potenciálně lepší výkon pro velmi složité UI. Méně intuitivní pro spolupráci na UI.

Většina moderních iOS aplikací preferuje použití storyboardů nebo .xib souborů, kde je loadView voláno automaticky pro načtení pohledu z těchto zdrojů. Přepsání loadView je nižší úrovně přístup, který by měl být používán pouze tehdy, když je to skutečně nutné.