Xcode — UIKit — Lifecycle’lar nedir? Nerelerde kullanılmalıdır?

Beytullah Özer
LCW Digital
Published in
2 min readOct 26, 2023

iOS programlama dilinde önemli bir kavram olan UIViewController’ın yaşam döngüsünden türkçe olarak bahsedeceğim. Projelerimizde ve bazı teorik alanlarda sıklıkla ihtiyaç duyacağınız bu yapının nasıl çalıştığını öğrenmek adına açıklamada bulunuyorum.

UIViewController

UIKit üzerinde kullandığımız kütüphanenin sınıfıdır ve iOS uygulamalarımızda görünen her bir sayfayı yöneten büyük bir yapıdır. Arayüzde kullandığımız tüm elemanları bir araya getirerek kullanıcıların dokunduğu ekranlarda bu nesneler ile etkileşim kurmasını sağlar.

Resim 1 : UIViewController üzerindeki Lifecycle

Biz genellikler UIViewController’dan inherit olmuş sınıflar ile çalışmaktayız. Örneğin, HomeViewController.swift yada FavoriteViewController.swift dosyanız bir UIViewController’dan türemiştir. Kullanıcı ve UIView nesneleri arasındaki etkileşimi yönetir. Bu View nesnelerinde gerçekleşen olaylardaki verileri günceller.

Resim 1'de görünenin yanı sıra yaşam döngüsünü detaylı aşağıda açıklayalım.

1– init
2- loadView
3- viewDidLoad
4- viewWillAppear
5- viewDidAppear
6- viewWillDisappear
7- viewDidDisappear

  • viewDidLoad

Bu fonksiyon bir UIViewController’da 1 defa çalışmaktadır. Çağırıldığında ViewController oluşturulur ve buna bağlı tüm IBOutlet Variables’lar hazır hale gelir. Eğer Api’den bir defalık veri çekmeniz gerekirse bu fonksiyon en uygunudur.

  • viewWillAppear

UIViewController görünmeden hemen önce çağrılır. Alanları gizlemek & göstermek veya ekranın görünmesinden önce her defasında olmasını istediğiniz işlemler için uygundur.

  • viewDidAppear

UIViewController görüntülendikten hemen sonra çağrılır. Bir animasyonu başlatmak veya bir API’dan verilerin yüklenmeye başlaması için uygun bir noktadır.

  • viewWillDisappear

viewWillAppear metoduna benzer olarak bu fonksiyon da bir UIViewController objesi ekrandan kaybolmadan hemen önce çalışır. viewWillAppear gibi bu fonksiyonda bir UIViewController objesinin hayat döngüsü boyunca birden fazla kez çalışabilir. Kullanıcı farklı bir sayfaya geçmeye başladığında çalışır.

  • viewDidDisappear

Bir UIViewController objesi ekrandan kaybolduktan sonra bu fonksiyon çalışır. Kaybolduktan sonra arkada çalışmaya devam etmesini istemediğiniz işlemler için genellikle bu fonksiyonu override edersiniz.

class HomeViewController: UIViewController {

let name: String

init(name: String) {
self.name = name
super.init(nibName: nil, bundle: nil)
}

required init?(coder: NSCoder) {
fatalError("init(coder:) has not been implemented")
}

override func loadView() {
super.loadView()
self.logMethod()
}

override func viewDidLoad() {
super.viewDidLoad() // Do any additional setup after loading the view.
self.logMethod()
}

func logMethod(function: StaticString = #function) {
print("VC \(self.name) - \(function) invoked")
}

override func viewWillAppear(_ animated: Bool) {
super.viewWillAppear(animated)
self.logMethod()
}

override func viewDidAppear(_ animated: Bool) {
super.viewDidAppear(animated)
self.logMethod()
}

override func viewWillDisappear(_ animated: Bool) {
super.viewWillDisappear(animated)
self.logMethod()
}

override func viewDidDisappear(_ animated: Bool) {
super.viewDidDisappear(animated)
self.logMethod()
}
}

Sayfa açıldı;

  • loadView() çalıştı,
  • viewDidLoad() çalıştı,
  • viewWillAppear() çalıştı,
  • viewDidAppear() çalıştı.

--

--