Middle
მითხარით კონტროლერის სიცოცხლის ციკლებზე და როგორ იძახიან ისინი.
sobes.tech AI
პასუხი AI-სგან
UIViewController-ის ციკლი მოიცავს მეთოდებს, რომლებიც იძახიან მისი არსებობის გარკვეულ მომენტებში: შექმნიდან განადგურებამდე.
ძირითადი ციკლის მეთოდები:
-
viewDidLoad():- იძახება, როდესაც კონტროლერის ხედვა იტვირთება მეხსიერებაში, მაგრამ ჯერ არ ჩანს ეკრანზე.
- გამოიყენება მონაცემების ინიციალიზაციისა და UI ელემენტების კონფიგურაციისთვის, რომლებიც დამოკიდებული არ არის გეომეტრიის վրա.
- იძახება მხოლოდ ერთხელ მთელი სიცოცხლის განმავლობაში.
-
viewWillAppear(_ animated: Bool):- პირდაპირ იძახება მაშინ, როდესაც ხედვა გამოჩნდება ეკრანზე.
- გამოიყენება ამოცანების შესასრულებლად, რომლებიც უნდა ხდებოდეს ყოველ ჯერზე, როდესაც ხედვა ხდება ხილული (მაგალითად, მონაცემების განახლება, ანიმაციები).
- შეიძლება იძახოს რამდენჯერმე.
-
viewDidAppear(_ animated: Bool):- იძახება, როდესაც ხედვა სრულად გამოჩნდება ეკრანზე და გახდება მომხმარებლისთვის ხილული.
- შესაფერისია ანიმაციების ან სხვა ამოცანების დასაწყებად, რომლებიც საჭიროებს, რომ ხედვა სრულად იყოს მზად.
- შეიძლება იძახოს რამდენჯერმე.
-
viewWillDisappear(_ animated: Bool):- პირდაპირ იძახება მაშინ, როდესაც ხედვა წაიშლება ეკრანიდან (მაგალითად, სხვა ეკრანზე გადასვლისას).
- გამოიყენება მდგომარეობის შენახვის ან ამოცანების შეჩერებისთვის, რომლებიც არ უნდა შესრულდეს, სანამ ხედვა არ არის ხილული (მაგალითად, დროის გამწყვეტი შეჩერება).
- შეიძლება იძახოს რამდენჯერმე.
-
viewDidDisappear(_ animated: Bool):- იძახება, როდესაც ხედვა სრულად წაიშლება ეკრანიდან.
- გამოიყენება რესურსების გათავისუფლების ან ამოცანების შეჩერებისთვის, რომლებიც აღარ არის საჭირო, როდესაც ხედვა არ არის ხილული.
- შეიძლება იძახოს რამდენჯერმე.
-
viewWillLayoutSubviews():- იძახება, წინათ, როდესაც კონტროლერი იწყებს თავის ქვედიზბორდების განლაგებას.
- გამოიყენება ცვლილებების შეტანისთვის კონსტრაინტებში ან ფრეიმებში ავტომატური განლაგების წინ.
- შეიძლება იძახოს რამდენჯერმე.
-
viewDidLayoutSubviews():- იძახება, როდესაც კონტროლერი დასრულებს ქვედიზბორდების განლაგებას.
- გამოიყენება ამოცანების შესასრულებლად, რომლებიც დამოკიდებულია საბოლოო ზომებზე (მაგალითად, სქროლ-ინდიკატორების ან ჩრდილების კონფიგურაცია).
- შეიძლება იძახოს რამდენჯერმე.
-
didReceiveMemoryWarning():- იძახება, როდესაც ოპერაციული მეხსიერება დაბალია.
- გამოიყენება რესურსების გათავისუფლებისთვის, რომლებიც მოგვიანებით შეიძლება კვლავ შეიქმნას.
-
deinit:- იძახება პირდაპირ წინ, ვიდრე
UIViewControllerობიექტი დაინგრევა და მეხსიერებიდან გათავისუფლდება. - გამოიყენება საბოლოო სისუფთავისათვის, მაგალითად, დამკვირვებლების წაშლის ან ქსელური კავშირების დახურვისთვის.
- იძახება პირდაპირ წინ, ვიდრე
კოლბაკების სია:
ტიპიური მეთოდების გამოძახების სია კონტროლერის გამოჩენის დროს:
viewDidLoad()viewWillAppear(_ animated: Bool)viewWillLayoutSubviews()viewDidLayoutSubviews()viewDidAppear(_ animated: Bool)
კონტროლერის გაქრობის დროს:
viewWillDisappear(_ animated: Bool)viewDidDisappear(_ animated: Bool)deinit(თუ კონტროლერი აღარ არის საჭირო)
შესაბამისი მაგალითი:
import UIKit
class MyViewController: UIViewController {
override func viewDidLoad() {
super.viewDidLoad()
// UI-ის კონფიგურაცია, მონაცემების ინიციალიზაცია
print("viewDidLoad")
}
override func viewWillAppear(_ animated: Bool) {
super.viewWillAppear(animated)
// UI-ის განახლება გამოჩენის წინ
print("viewWillAppear")
}
override func viewDidAppear(_ animated: Bool) {
super.viewDidAppear(animated)
// გამოჩენის შემდეგ, ანიმაციების დაწყება
print("viewDidAppear")
}
override func viewWillDisappear(_ animated: Bool) {
super.viewWillDisappear(animated)
// მომზადება გაქრობისთვის, მდგომარეობის შენახვა
print("viewWillDisappear")
}
override func viewDidDisappear(_ animated: Bool) {
super.viewDidDisappear(animated)
// გაქრობის დასრულება, რესურსების გაწმენდა
print("viewDidDisappear")
}
override func viewWillLayoutSubviews() {
super.viewWillLayoutSubviews()
// ავტო-განლაგებამდე
print("viewWillLayoutSubviews")
}
override func viewDidLayoutSubviews() {
super.viewDidLayoutSubviews()
// ავტო-განლაგების შემდეგ
print("viewDidLayoutSubviews")
}
deinit {
// რესურსების გაწმენდა
print("deinit")
}
}