როდესაც კონტროლერი შეიქმნება, მისი ხედი დაუყოვნებლივ შეიქმნება?
sobes.tech AI
პასუხი AI-სგან
არა. დათვალიერების მაგალითი (view) UIViewController ტიპის კონტროლერისთვის შექმნილია გვიან — პირველად მიმართვისას view თვისებას:
UIKit არ ქმნის დათვალიერებას კონტროლერის ინიციალიზაციის შემდეგ, რესურსების ოპტიმიზაციის მიზნით. დათვალიერება შეიძლება იყოს ვიზუალურად რთული და მოითხოვს ბევრ მეხსიერებას და პროცესორის დროს მის შექმნაზე. მას "სასურველ" დროს ქმნის, მხოლოდ როდესაც ის ნამდვილად საჭიროა ეკრანზე გამოსაჩენად, სისტემა ხარჯებს ანაზღაურებს.
ეს პროცესი ხდება, მაგალითად, როდესაც კონტროლერი ემატება სხვა კონტროლერის ან ფანჯრის დათვალიერების ჰიეარარქიაში ან როდესაც მისი view თვისება პირდაპირ გამოიძახება. თუ კონტროლერი ინიციალიზებულია, მაგრამ არასდროს ჩანს ან არ გამოიყენება, მისი დათვალიერება არ იქმნება.
კონტროლერის ცხოვრების ციკლი და დათვალიერების შექმნა მოიცავს შემდეგ ძირითად მომენტებს:
init(coder:)ანinit(nibName:bundle:): კონტროლერი ინიციალიზებულია, მაგრამviewჯერnil.- პირველი მიმართვა
view-ზე: თუviewთანაბარიაnil, სისტემა გამოიძახებსloadView()მეთოდს. loadView(): ამ მეთოდში თქვენ (ან სისტემა ავტომატურად) ქმნით კონტროლერის ძირითადი დათვალიერებას და აკავშირებთ მასviewთვისებას.viewDidLoad(): ეს მეთოდი გამოიძახება მეორე მას შემდეგ, რაც დათვალიერება იტვირთება და მიენიჭებაview. აქ ჩვეულებრივ ხდება შიდა დათვალიერებების კონფიგურაცია, მონაცემების ჩატვირთვა და სხვა მოქმედებები, რომლებიც დამოკიდებულია დათვალიერების არსებობაზე.
loadView()-ის გადაწერას მაგალითი:
override func loadView() {
// ნაცვლად Storyboard/XIB-ის ან ცარიელი UIView-ის შექმნის
// ვქმნით ჩვენი უნიკალური დათვალიერებას
let customView = CustomContentView()
view = customView
// აქ view უკვე არა `nil`
}
მნიშვნელოვანია, რომ უმეტეს შემთხვევაში, თქვენ პირდაპირ არ გადაწერთ loadView(), არამედ ენდობით UIKit-ის სტანდარტულ რეალიზაციას, რომელიც იტვირთება Storyboard-დან, XIB-დან ან ქმნის ცარიელ UIView-ს როგორც საწყისს. თუმცა, მნიშვნელოვანია იცოდეთ, როდის და როგორ იქმნება დათვალიერება.