Middle
Denetleyicinin yaşam döngülerinden ve bunların nasıl çağrıldığından bahsedin.
sobes.tech yapay zeka
AI'dan gelen yanıt
UIViewController yaşam döngüsü, varoluşunun belirli anlarında çağrılan yöntemleri içerir: oluşturulmadan yok edilmesine kadar.
Yaşam döngüsünün temel yöntemleri:
-
viewDidLoad():- Kontrolörün görünümü belleğe yüklendikten sonra, ekran gösterilmeden önce çağrılır.
- Veri başlatmak, görünümün geometrisine bağlı olmayan UI öğelerini yapılandırmak için kullanılır.
- Kontrolörün yaşamı boyunca yalnızca bir kez çağrılır.
-
viewWillAppear(_ animated: Bool):- Kontrolörün görünümü ekranda görünmeden hemen önce çağrılır.
- Her görünüm görünür hale geldiğinde gerçekleşmesi gereken görevleri yapmak için kullanılır (örneğin, veri güncelleme, animasyonlar).
- Birden çok kez çağrılabilir.
-
viewDidAppear(_ animated: Bool):- Kontrolörün görünümü tamamen ekranda göründükten sonra çağrılır.
- Animasyonları başlatmak veya görünümün tamamen hazır olmasını gerektiren diğer görevleri yapmak için uygundur.
- Birden çok kez çağrılabilir.
-
viewWillDisappear(_ animated: Bool):- Kontrolörün görünümü ekrandan kaldırılmadan hemen önce çağrılır (örneğin, başka bir ekrana geçerken).
- Durumu kaydetmek veya görünüm görünmez olurken devam etmemesi gereken görevleri durdurmak için kullanılır (örneğin, zamanlayıcıları durdurmak).
- Birden çok kez çağrılabilir.
-
viewDidDisappear(_ animated: Bool):- Kontrolörün görünümü tamamen kaybolduktan sonra çağrılır.
- Kaynakları serbest bırakmak veya artık gerek olmayan görevleri durdurmak için kullanılır.
- Birden çok kez çağrılabilir.
-
viewWillLayoutSubviews():- Kontrolör alt görünümlerini düzenlemeye başlamadan önce çağrılır.
- Auto-layout'tan önce kısıtlamalarda veya çerçevelerde değişiklik yapmak için kullanılır.
- Birden çok kez çağrılabilir.
-
viewDidLayoutSubviews():- Kontrolör alt görünümlerini düzenlemeyi tamamladıktan sonra çağrılır.
- Alt görünümlerin son boyutlarına bağlı görevleri yapmak için kullanılır (örneğin, kaydırıcı göstergeleri veya gölgeleri yapılandırmak).
- Birden çok kez çağrılabilir.
-
didReceiveMemoryWarning():- Düşük bellek seviyesinde çağrılır.
- Daha sonra yeniden oluşturulabilecek kaynakları serbest bırakmak için kullanılır.
-
deinit:UIViewControllernesnesi yok edilmeden hemen önce çağrılır.- Son temizlik işlemlerini yapmak için kullanılır, örneğin gözlemcileri kaldırmak veya ağ bağlantılarını kapatmak.
Çağrı sırası:
Kontrolör görünür hale gelirken tipik çağrı sırası:
viewDidLoad()viewWillAppear(_ animated: Bool)viewWillLayoutSubviews()viewDidLayoutSubviews()viewDidAppear(_ animated: Bool)
Kontrolör kaybolurken tipik çağrı sırası:
viewWillDisappear(_ animated: Bool)viewDidDisappear(_ animated: Bool)deinit(kontrolör artık gerekmediğinde)
Uygulama örneği:
import UIKit
class MyViewController: UIViewController {
override func viewDidLoad() {
super.viewDidLoad()
// UI yapılandırması, veri başlatma
print("viewDidLoad")
}
override func viewWillAppear(_ animated: Bool) {
super.viewWillAppear(animated)
// Görünmeden önce UI güncellemesi
print("viewWillAppear")
}
override func viewDidAppear(_ animated: Bool) {
super.viewDidAppear(animated)
// Görünüm tamamlandı, animasyonlar başlat
print("viewDidAppear")
}
override func viewWillDisappear(_ animated: Bool) {
super.viewWillDisappear(animated)
// Kaydetme ve hazırlık
print("viewWillDisappear")
}
override func viewDidDisappear(_ animated: Bool) {
super.viewDidDisappear(animated)
// Temizlik
print("viewDidDisappear")
}
override func viewWillLayoutSubviews() {
super.viewWillLayoutSubviews()
// Auto-layout öncesi
print("viewWillLayoutSubviews")
}
override func viewDidLayoutSubviews() {
super.viewDidLayoutSubviews()
// Auto-layout sonrası
print("viewDidLayoutSubviews")
}
deinit {
// Kaynak temizliği
print("deinit")
}
}