Вы хотите получить, какой ViewController пользователь заканчивает на
Делегировать методы, которые могут быть предоставлены через UIApplicationDelegate. Для реализации.
Реализация кода:
- (void)applicationDidEnterBackground:(UIApplication *)application {
// yzh_findTod Mothod is a class static method that I'm extending on my UIViewController.
UIViewController* lastActionViewController = [UIViewController yzh_findTopViewController];
NSUserDefaults* userDefault = [NSUserDefaults standardUserDefaults];
[userDefault setValue:lastActionViewController forKey:@"lastActionVC"];
}
+ (UIViewController *)yzh_findTopViewController{
UIViewController* currenViewController = [self yzh_rootViewController];
BOOL runLoopFind = YES;
while (runLoopFind) {
if (currenViewController.presentedViewController) {
currenViewController = currenViewController.presentedViewController;
} else {
if ([currenViewController isKindOfClass:[UINavigationController class]]) {
currenViewController = [currenViewController.childViewControllers lastObject];
} else if ([currenViewController isKindOfClass:[UITabBarController class]]) {
UITabBarController* tabBarController = (UITabBarController* )currenViewController;
currenViewController = tabBarController.selectedViewController;
} else {
if (currenViewController.childViewControllers.count > 0) {
currenViewController = [currenViewController.childViewControllers lastObject];
} else {
return currenViewController;
}
}
}
}
return currenViewController;
}
+ (UIViewController *)yzh_rootViewController{
UIWindow* window = YZHAppWindow;
return window.rootViewController;
}
Я надеюсь, что мой ответ поможет вам