View Controllers & Lifecycle

June 02, 2026 1 min read

A UIViewController manages one screen. Like Android Activities, it has lifecycle methods you hook into.

Lifecycle methods

  • viewDidLoad() — view loaded once; set up UI here.
  • viewWillAppear(_:) — about to become visible; refresh data.
  • viewDidAppear(_:) — fully on screen.
  • viewWillDisappear(_:) — leaving; save/pause.
class ProfileVC: UIViewController {
    override func viewDidLoad() {
        super.viewDidLoad()
        setupUI()
    }
    override func viewWillAppear(_ animated: Bool) {
        super.viewWillAppear(animated)
        reloadData()
    }
}
Common mistake: Don't access subviews before viewDidLoad — they don't exist yet.

Summary

View controllers manage screens with a clear lifecycle. Set up UI in viewDidLoad and refresh in viewWillAppear.