UIKitMidMCQ

What is the `UIViewController` lifecycle?

Test your knowledge:

Explanation & Code

Answer: A UIViewController goes through a predictable sequence of method calls as its view is created, displayed, and removed.

init → loadView → viewDidLoad → viewWillAppear → viewDidAppear
                                                        ↓
                               viewWillDisappear → viewDidDisappear → deinit

Key methods and their purpose:

class MyViewController: UIViewController {

    override func viewDidLoad() {
        super.viewDidLoad()
        // Called once — set up UI, configure views, add subviews
        setupUI()
        bindViewModel()
    }

    override func viewWillAppear(_ animated: Bool) {
        super.viewWillAppear(animated)
        // Called every time view is about to appear — refresh data, show nav bar
        navigationController?.setNavigationBarHidden(false, animated: animated)
    }

    override func viewDidAppear(_ animated: Bool) {
        super.viewDidAppear(animated)
        // View is visible — start animations, begin location updates
    }

    override func viewWillDisappear(_ animated: Bool) {
        super.viewWillDisappear(animated)
        // About to leave — pause video, resign first responder
    }

    override func viewDidDisappear(_ animated: Bool) {
        super.viewDidDisappear(animated)
        // Gone — stop timers, save state
    }
}

Rate your understanding:

Ready to practice more UIKit?

Test yourself with our interactive quiz mode or browse all curated questions for this topic.