lf215
lf215

Reputation: 959

ios simulator viewDidLoad, viewDidAppear not called after close or quit

My app has one view controller and one view. When I run my app on the simulator from xcode, the app loads and both viewDidLoad, viewDidAppear are called as expected.

  1. When I go to the simulator home screen and then come back to the app, I expect viewDidLoad to be called, but it is not.

  2. When I QUIT the app by following these directions, and restart the app fresh, I expect both methods to be called, but neither are called.

If these events don't trigger those calls, then what will trigger those calls? It's hard to believe that on a real device, viewDidLoad is only called once - the first time the app is loaded.

Upvotes: 0

Views: 1051

Answers (1)

Jason Nam
Jason Nam

Reputation: 2011

It says "load". It literally means that it is called when the view controller is loaded(instantiated). Also the "appear" is called when the view is appeared like when you push it or dismiss other view controller above it.

The thing you want is register the following notifications

static let UIApplicationWillEnterForeground: NSNotification.Name
static let UIApplicationDidEnterBackground: NSNotification.Name
static let UIApplicationDidBecomeActive: NSNotification.Name

In your view controller's viewDidLoad() add notification.

NotificationCenter.default.addObserver(self, selector: #selector(ViewController.applicationDidBecomeActive), name: NSNotification.Name.UIApplicationDidBecomeActive, object: nil)

Then the following method will be called when the app becomes active again form the background.

func applicationDidBecomeActive() {
    // Update your view controller
}

Case 2:

If you quit the app like the instruction, the debug session is terminated so the break point and log is not working. If you quit your app and want to check the break points or logs you need to hit run again in your Xcode.

Upvotes: 4

Related Questions