|
7 | 7 | // |
8 | 8 |
|
9 | 9 | #import "LPMessageTemplateUtilities.h" |
10 | | -#import "LPPopupViewController.h" |
11 | | -#import "LPInterstitialViewController.h" |
12 | | -#import "LPWebInterstitialViewController.h" |
13 | 10 |
|
14 | 11 | @implementation LPMessageTemplateUtilities |
15 | 12 |
|
16 | 13 | +(void)presentOverVisible:(UIViewController *)viewController |
17 | 14 | { |
18 | | - [self present:viewController asChild:NO]; |
| 15 | + [self present:viewController]; |
19 | 16 | } |
20 | 17 |
|
21 | | -+(void)presentOverVisibleAsChild:(UIViewController *)viewController |
22 | | -{ |
23 | | - [self present:viewController asChild:YES]; |
24 | | -} |
25 | | - |
26 | | -+(void)present:(UIViewController *)viewController asChild:(BOOL)presentAsChild |
| 18 | ++(void)present:(UIViewController *)viewController |
27 | 19 | { |
28 | 20 | [self dismissExisitingViewController:^{ |
29 | 21 | UIViewController *topViewController = [self visibleViewController]; |
| 22 | + |
30 | 23 | // if topViewController is getting dismissed, get view controller that presented it and let it present our new view controller, |
31 | 24 | // otherwise we can assume that our topViewController will be in view hierarchy when presenting new view controller |
32 | 25 | if (topViewController.isBeingDismissed) { |
33 | | - if (!presentAsChild) { |
34 | | - [[topViewController presentingViewController] presentViewController:viewController animated:YES completion:nil]; |
35 | | - } else { |
36 | | - [self displayContentController:viewController withParent:[topViewController presentingViewController]]; |
37 | | - } |
38 | | - } else { |
39 | | - if (!presentAsChild) { |
40 | | - [topViewController presentViewController:viewController animated:YES completion:nil]; |
41 | | - } else { |
42 | | - [self displayContentController:viewController withParent:topViewController]; |
43 | | - } |
| 26 | + topViewController = [topViewController presentingViewController]; |
44 | 27 | } |
| 28 | + |
| 29 | + [topViewController presentViewController:viewController animated:YES completion:nil]; |
45 | 30 | }]; |
46 | 31 | } |
47 | 32 |
|
48 | | -+(void)displayContentController:(UIViewController*)content withParent:(UIViewController*)parent |
49 | | -{ |
50 | | - [parent addChildViewController:content]; |
51 | | - [parent.view addSubview:content.view]; |
52 | | - [content didMoveToParentViewController:parent]; |
53 | | -} |
54 | | - |
55 | 33 | +(void)dismissExisitingViewController:(nullable void (^)(void)) completion |
56 | 34 | { |
57 | 35 | UIViewController *topViewController = [self visibleViewController]; |
@@ -80,35 +58,4 @@ +(UIViewController *) visibleViewController |
80 | 58 | return topViewController; |
81 | 59 | } |
82 | 60 |
|
83 | | -+ (UIViewController *) topViewController |
84 | | -{ |
85 | | - UIViewController *topViewController = [self visibleViewController]; |
86 | | - |
87 | | - if ([topViewController isKindOfClass:[UITabBarController class]]) { |
88 | | - topViewController = [((UITabBarController *) topViewController) selectedViewController]; |
89 | | - } |
90 | | - |
91 | | - if ([topViewController isKindOfClass:[UINavigationController class]]) { |
92 | | - topViewController = [((UINavigationController *) topViewController) visibleViewController]; |
93 | | - } |
94 | | - |
95 | | - if ([topViewController isKindOfClass:[UIPageViewController class]]) { |
96 | | - topViewController = [[((UIPageViewController *) topViewController) viewControllers] objectAtIndex:0]; |
97 | | - } |
98 | | - |
99 | | - // UISplitViewController is not handled at the moment |
100 | | - |
101 | | - while (topViewController.presentedViewController) { |
102 | | - topViewController = topViewController.presentedViewController; |
103 | | - } |
104 | | - |
105 | | - // if topViewController is getting dismissed, get view controller that presented it and let it present our new view controller, |
106 | | - // otherwise we can assume that our topViewController will be in view hierarchy when presenting new view controller |
107 | | - if (topViewController.beingDismissed) { |
108 | | - topViewController = [topViewController presentingViewController]; |
109 | | - } |
110 | | - |
111 | | - return topViewController; |
112 | | -} |
113 | | - |
114 | 61 | @end |
0 commit comments