Sobes.tech
Middle

Nəzarətçinin həyat dövrlərindən və onların necə çağrıldığından danış.

sobes.tech Süni İntellekt

AI-dan cavab

UIViewController-in həyat dövrü onun mövcudluğunun müəyyən anlarında çağırılan metodları əhatə edir: yaradılmadan məhv edilməyə qədər.

Həyat dövrünün əsas metodları:

  1. viewDidLoad():

    • Kontrolörün görünüşü yaddaşa yükləndikdən sonra, lakin ekranə çıxmadan əvvəl çağırılır.
    • Məlumatların ilkinləşdirilməsi, görünüşün geometriyasına bağlı olmayan UI elementlərinin qurulması üçün istifadə olunur.
    • Həyat dövrü ərzində yalnız bir dəfə çağırılır.
  2. viewWillAppear(_ animated: Bool):

    • Kontrolörün görünüşü ekranda görünməzdən əvvəl birbaşa çağırılır.
    • Hər dəfə görünüş görünən vəziyyətə keçəndə həyata keçirilməli olan tapşırıqlar üçün istifadə olunur (məsələn, məlumatların yenilənməsi, animasiyalar).
    • Bir neçə dəfə çağırıla bilər.
  3. viewDidAppear(_ animated: Bool):

    • Kontrolörün görünüşü tam olaraq ekranda görünəndən sonra çağırılır.
    • Animasiya və ya digər tapşırıqların başlaması üçün uyğundur, görünüş tam hazır olmalıdır.
    • Bir neçə dəfə çağırıla bilər.
  4. viewWillDisappear(_ animated: Bool):

    • Kontrolörün görünüşü ekrandan çıxmadan əvvəl birbaşa çağırılır (məsələn, başqa ekrana keçid zamanı).
    • Vəziyyətin saxlanması və ya görünməyən zaman icra olunmaması lazım olan tapşırıqların dayandırılması üçün istifadə olunur (məsələn, timerlərin dayandırılması).
    • Bir neçə dəfə çağırıla bilər.
  5. viewDidDisappear(_ animated: Bool):

    • Kontrolörün görünüşü tam olaraq ekrandan çıxarıldıqdan sonra çağırılır.
    • Resursların təmizlənməsi və ya artıq lazım olmayan tapşırıqların dayandırılması üçün istifadə olunur.
    • Bir neçə dəfə çağırıla bilər.
  6. viewWillLayoutSubviews():

    • Kontrolörün alt görünüşlərinin yerləşdirilməsinə başlamazdan əvvəl çağırılır.
    • Auto layout-dan əvvəl constraints və ya frame-lərdə dəyişikliklər üçün istifadə olunur.
    • Bir neçə dəfə çağırıla bilər.
  7. viewDidLayoutSubviews():

    • Kontrolörün alt görünüşlərinin yerləşdirilməsi tamamlandıqdan sonra çağırılır.
    • Final ölçülərə əsaslanan tapşırıqlar üçün istifadə olunur (məsələn, scroll göstəricilərinin və ya kölgələrin tənzimlənməsi).
    • Bir neçə dəfə çağırıla bilər.
  8. didReceiveMemoryWarning():

    • Az yaddaş vəziyyətində çağırılır.
    • Sonradan yenidən yaradıla biləcək resursların sərbəst buraxılması üçün istifadə olunur.
  9. deinit:

    • UIViewController obyekti məhv ediləndə və yaddaşdan azad ediləndə birbaşa çağırılır.
    • Son təmizləməni həyata keçirmək üçün istifadə olunur, məsələn, müşahidəçilərin silinməsi və ya şəbəkə əlaqələrinin bağlanması.

Çağırış ardıcıllığı:

Kontrolörün görünməyə başlaması zamanı metodların tipik çağırış ardıcıllığı:

  1. viewDidLoad()
  2. viewWillAppear(_ animated: Bool)
  3. viewWillLayoutSubviews()
  4. viewDidLayoutSubviews()
  5. viewDidAppear(_ animated: Bool)

Kontrolörün yox olma zamanı metodların tipik çağırış ardıcıllığı:

  1. viewWillDisappear(_ animated: Bool)
  2. viewDidDisappear(_ animated: Bool)
  3. deinit (əgər artıq lazım deyilsə)

İcra nümunəsi:

import UIKit

class MyViewController: UIViewController {

    override func viewDidLoad() {
        super.viewDidLoad()
        // UI-nin qurulması, məlumatların ilkinləşdirilməsi
        print("viewDidLoad")
    }

    override func viewWillAppear(_ animated: Bool) {
        super.viewWillAppear(animated)
        // Görünüşün görünməsindən əvvəl yeniləmələr
        print("viewWillAppear")
    }

    override func viewDidAppear(_ animated: Bool) {
        super.viewDidAppear(animated)
        // Görünüş tam olaraq göründükdən sonra, animasiyaların başlanması
        print("viewDidAppear")
    }

    override func viewWillDisappear(_ animated: Bool) {
        super.viewWillDisappear(animated)
        // Yox olmağa hazırlıq, vəziyyətin saxlanması
        print("viewWillDisappear")
    }

    override func viewDidDisappear(_ animated: Bool) {
        super.viewDidDisappear(animated)
        // Yox olma tamamlandı, təmizləmə
        print("viewDidDisappear")
    }
    
    override func viewWillLayoutSubviews() {
        super.viewWillLayoutSubviews()
        // Avto layout-dan əvvəl
        print("viewWillLayoutSubviews")
    }
    
    override func viewDidLayoutSubviews() {
        super.viewDidLayoutSubviews()
        // Avto layout-dan sonra
        print("viewDidLayoutSubviews")
    }

    deinit {
        // Resursların təmizlənməsi
        print("deinit")
    }
}