summaryrefslogtreecommitdiff
path: root/platform/ios/src
diff options
context:
space:
mode:
Diffstat (limited to 'platform/ios/src')
-rw-r--r--platform/ios/src/MGLMapView.mm12
-rw-r--r--platform/ios/src/UIViewController+MGLAdditions.h11
-rw-r--r--platform/ios/src/UIViewController+MGLAdditions.m22
3 files changed, 38 insertions, 7 deletions
diff --git a/platform/ios/src/MGLMapView.mm b/platform/ios/src/MGLMapView.mm
index 540f6de861..4b5ca8679a 100644
--- a/platform/ios/src/MGLMapView.mm
+++ b/platform/ios/src/MGLMapView.mm
@@ -40,12 +40,13 @@
#import "NSBundle+MGLAdditions.h"
#import "NSDate+MGLAdditions.h"
-#import "NSString+MGLAdditions.h"
-#import "NSProcessInfo+MGLAdditions.h"
#import "NSException+MGLAdditions.h"
+#import "NSPredicate+MGLAdditions.h"
+#import "NSProcessInfo+MGLAdditions.h"
+#import "NSString+MGLAdditions.h"
#import "NSURL+MGLAdditions.h"
#import "UIImage+MGLAdditions.h"
-#import "NSPredicate+MGLAdditions.h"
+#import "UIViewController+MGLAdditions.h"
#import "MGLFaux3DUserLocationAnnotationView.h"
#import "MGLUserLocationAnnotationView.h"
@@ -1917,10 +1918,7 @@ public:
attributionController.popoverPresentationController.sourceView = self;
attributionController.popoverPresentationController.sourceRect = self.attributionButton.frame;
- UIViewController *viewController = self.window.rootViewController;
- if ([viewController isKindOfClass:[UINavigationController class]]) {
- viewController = [(UINavigationController *)viewController viewControllers].firstObject;
- }
+ UIViewController *viewController = [self.window.rootViewController mgl_topMostViewController];
[viewController presentViewController:attributionController
animated:YES
completion:NULL];
diff --git a/platform/ios/src/UIViewController+MGLAdditions.h b/platform/ios/src/UIViewController+MGLAdditions.h
new file mode 100644
index 0000000000..b60375a6f6
--- /dev/null
+++ b/platform/ios/src/UIViewController+MGLAdditions.h
@@ -0,0 +1,11 @@
+#import <UIKit/UIKit.h>
+
+NS_ASSUME_NONNULL_BEGIN
+
+@interface UIViewController (MGLAdditions)
+
+@property (readonly) UIViewController *mgl_topMostViewController;
+
+@end
+
+NS_ASSUME_NONNULL_END
diff --git a/platform/ios/src/UIViewController+MGLAdditions.m b/platform/ios/src/UIViewController+MGLAdditions.m
new file mode 100644
index 0000000000..746fdd8db8
--- /dev/null
+++ b/platform/ios/src/UIViewController+MGLAdditions.m
@@ -0,0 +1,22 @@
+#import "UIViewController+MGLAdditions.h"
+
+@implementation UIViewController (MGLAdditions)
+
+- (UIViewController *)mgl_topMostViewController
+{
+ if ([self isKindOfClass:[UINavigationController class]])
+ {
+ return [[(UINavigationController *)self visibleViewController] mgl_topMostViewController];
+ }
+ else if ([self isKindOfClass:[UITabBarController class]])
+ {
+ return [[(UITabBarController *)self selectedViewController] mgl_topMostViewController];
+ }
+ else if (self.presentedViewController)
+ {
+ return [self.presentedViewController mgl_topMostViewController];
+ }
+ return self;
+}
+
+@end