Reputation: 7846
So I want to support app switching in my upcoming iPhone app and I've implemented all the proper delegate methods in my application delegate. So when the user resumes the application, I can see their activity in the NSLog and all. However, how can I tell my app has resumed a controller? Is there a method I can put in my controller to tell me the app has resumed in said controller? Reason I ask is because my application handles its own URL schema, and I want to update the view depending on the URL launched. Any help will be greatly appreciated.
Thanks in advance
Upvotes: 10
Views: 3642
Reputation: 887
For Swift 4.2:
NotificationCenter.default.addObserver(self,
selector: #selector(appWillEnterForeground),
name: UIApplication.willEnterForegroundNotification,
object: nil)
@objc func appWillEnterForeground() {
// run when app enters foreground
}
Upvotes: 3
Reputation: 311
You can also just override - (void)applicationDidBecomeActive:(UIApplication *)application
in the app delegate to have it do whatever you want it to do when it comes back from the background. If you want a particular view to get the message rather than the app delegate you need to register for the notification as described by Elfred above.
Upvotes: -2
Reputation: 3851
You can have you your controller observe the UIApplicationWillEnterForeground
notification. It probably would look something like this:
- (void) viewDidLoad
{
[super viewDidLoad];
//do stuff here
if(&UIApplicationWillEnterForegroundNotification) { //needed to run on older devices, otherwise you'll get EXC_BAD_ACCESS
NSNotificationCenter *notificationCenter = [NSNotificationCenter defaultCenter];
[notificationCenter addObserver:self selector:@selector(enteredForeground:) name:UIApplicationWillEnterForegroundNotification object:nil];
}
}
- (void)enteredForeground:(NSNotification*) not
{
//do stuff here
}
Upvotes: 20