İdarəçi yaradıldıqdan dərhal sonra onun görünüş nümunəsi yaradılırmı?
sobes.tech Süni İntellekt
AI-dan cavab
Xeyr. UIViewController tipli nəzarətçi üçün görünüş (view) nümunəsi tərtib olunmuş şəkildə, view xüsusiyyətinə ilk müraciətdən sonra yaradılır.
UIKit resursları optimallaşdırmaq üçün nəzarətçini işə saldıqdan sonra dərhal görünüşü yaratmır. Görünüş vizual olaraq mürəkkəb ola bilər və yaradılması üçün çox yaddaş və CPU vaxtı tələb edə bilər. Onu "tərtib olunmuş" şəkildə, yalnız ekran üzərində göstərilməsinə ehtiyac olduqda, sistem resursları qənaət edir.
Bu proses, məsələn, nəzarətçi başqa bir nəzarətçinin və ya pəncərənin görünüşlər hierarxiyasına əlavə olunduqda və ya onun view xüsusiyyəti açıq şəkildə çağırıldıqda baş verir. Əgər nəzarətçi inicializasiya olunubsa, amma heç vaxt göstərilməyibsə və ya istifadə olunmayıbsa, onun görünüşü yaradılmayacaq.
Nəzarətçinin həyat dövrü və görünüşün yaradılması aşağıdakı əsas məqamları əhatə edir:
init(coder:)və yainit(nibName:bundle:): Nəzarətçi inicializasiya olunur, ammaviewhələnil.- Birinci dəfə
view-a müraciət: Əgərviewnildirsə, sistemloadView()metodunu çağırır. loadView(): Bu metodda siz (və ya sistem tərəfindən standart olaraq) nəzarətçinin kök görünüşünü yaradırsınız və onaviewxüsusiyyətinə təyin edirsiniz.viewDidLoad(): Bu metod sonra görünüş yükləndikdən vəview-a təyin edildikdən sonra çağırılır. Burada adətən alt görünüşlərin konfiqurasiyası, məlumatların yüklənməsi və digər əməliyyatlar həyata keçirilir.
loadView()-u üst-üstə yazma nümunəsi:
override func loadView() {
// Storyboard/XIB-dən yükləmək və ya boş UIView yaratmaq yerinə
// öz xüsusi görünüşümüzü yaradırıq
let customView = CustomContentView()
view = customView
// Burada view artıq `nil` deyil
}
Əhəmiyyətli olan odur ki, çox hallarda loadView()-u birbaşa üst-üstə yazmayacaqsınız, əvəzinə UIKit-in standart tətbiqinə güvənəcəksiniz, bu da görünüşü Storyboard, XIB faylından yükləmək və ya standart olaraq boş UIView yaratmaqdır. Ancaq, görünüşün nə zaman və necə yaradıldığını başa düşmək çox vacibdir.