Sobes.tech
Middle

მითხარით Vue კონტროლერის სიცოცხლის ციკლზე.

sobes.tech AI

პასუხი AI-სგან

iOS-ში UIViewController ტიპის კონტროლერის ციკლი წარმოადგენს მოვლენების სერიას, რომლებიც ხდება მისი შექმნიდან განადგურებამდე. ძირითადი ეტაპები:

  1. შექმნა:
    • init?(coder aDecoder: NSCoder): შექმნა Storyboard/Nib-დან.
    • init(nibName nibNameOrNil: String?, bundle nibBundleOrNil: Bundle?): შექმნა Nib-ფაილიდან ან პროგრამულად Nib-გაუმართავი.
    • loadView(): კონტროლერის ძირითადი ხედის ჩატვირთვა ან შექმნა. თუ გამოიყენება Storyboard/Nib, ავტომატურად იძახება. პროგრამულად შექმნისას, საჭიროა გადაფარება.
  2. ხედის ჩატვირთვა:
    • viewDidLoad(): იძახება როდესაც ხედი ჩატვირთულია მეხსიერებაში. გამოიყენება ინიციალიზაციისთვის, როდესაც გეომეტრიაზე წვდომა არ არის საჭირო.
  3. ხედის გამოჩენა:
    • viewWillAppear(_ animated: Bool): იძახება უშუალოდ წინათ, ვიდრე ხედი გახდება ხილული. გამოიყენება მონაცემების განახლებისთვის.
    • viewDidAppear(_ animated: Bool): იძახება როდესაც ხედი გახდება ხილული. გამოიყენება ანიმაციების ან სხვა პროცესების დასაწყებად.
  4. ხედის გაქრობა:
    • viewWillDisappear(_ animated: Bool): იძახება უშუალოდ წინათ, ვიდრე ხედი გახდება უხილავი. გამოიყენება მდგომარეობის შენახვა ან აქტივობების შეჩერება.
    • viewDidDisappear(_ animated: Bool): იძახება როდესაც ხედი გახდება უხილავი. გამოიყენება რესურსების გათავისუფლებისთვის.
  5. მოდელის ცვლილება (Layout):
    • viewWillLayoutSubviews(): იძახება როდესაც ხედის ზომები იცვლება.
    • viewDidLayoutSubviews(): იძახება როდესაც ხედის ზომები განახლებულია. გამოიყენება ელემენტების საბოლოო განლაგებისთვის.
  6. ტრაიტების ცვლილება (Trait CollectionDidChange):
    • traitCollectionDidChange(_ previousTraitCollection: UITraitCollection?): იძახება გარემოს მახასიათებლების ცვლილებისას.
  7. მეხსიერების გათავისუფლება (Deinitialization):
    • deinit: იძახება როდესაც კონტროლერის ობიექტი მეხსიერებიდან ამოიღება. გამოიყენება რესურსების გასუფთავებისთვის.

მნიშვნელოვანი წერტილები:

  • loadView, viewDidLoad, viewDidAppear, viewWillDisappear, viewDidDisappear, deinit იძახება ერთხელ სიცოცხლის ციკლში.
  • viewWillAppear და viewDidAppear შეიძლება იძახოს რამდენჯერმე, მაგალითად, ნავიგაციის დროს.

მაგალითი კონტროლერის შექმნის და გამოჩენის სერიის:

// შექმნა (თუ Storyboard/Nib-დან)
init?(coder aDecoder: NSCoder)

// ან შექმნა (პროგრამულად)
init(nibName nibNameOrNil: String?, bundle nibBundleOrNil: Bundle?)

// ხედის ჩატვირთვა
loadView()
viewDidLoad()

// ხედის გამოჩენა
viewWillAppear(true)
// ... ხედმა გახადა ხილული ...
viewDidAppear(true)

// ხედის გაქრობა (მაგალითად, სხვა VC-ზე გადასვლისას)
viewWillDisappear(true)
// ... ხედმა გახადა უხილავი ...
viewDidDisappear(true)

// მეხსიერების გათავისუფლება (როდესაც კონტროლერზე აღარ არის ძლიერი კავშირები)
deinit