Reputation: 959
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.
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.
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
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