Skip to main content
AI Assist is now on Stack Overflow. Start a chat to get instant answers from across the network. Sign up to save and share your chats.
added 298 characters in body
Source Link
vrwim
  • 14.6k
  • 13
  • 68
  • 124

I think you need a combination of the accepted answer and @fishstix's

+ (UIViewController*) topMostController { UIViewController *topController = [UIApplication sharedApplication].keyWindow.rootViewController; while (topController.presentedViewController) { topController = topController.presentedViewController; } return topController; } 

Swift 3.0+

func topMostController() -> UIViewController? { guard let rootViewControllerwindow = UIApplication.shared.keyWindow?, let rootViewController = window.rootViewController else { return nil } var topController = rootViewController while let newTopController = topController.presentedViewController { topController = newTopController } return topController } 

I think you need a combination of the accepted answer and @fishstix's

+ (UIViewController*) topMostController { UIViewController *topController = [UIApplication sharedApplication].keyWindow.rootViewController; while (topController.presentedViewController) { topController = topController.presentedViewController; } return topController; } 

Swift 3.0+

let rootViewController = UIApplication.shared.keyWindow?.rootViewController 

I think you need a combination of the accepted answer and @fishstix's

+ (UIViewController*) topMostController { UIViewController *topController = [UIApplication sharedApplication].keyWindow.rootViewController; while (topController.presentedViewController) { topController = topController.presentedViewController; } return topController; } 

Swift 3.0+

func topMostController() -> UIViewController? { guard let window = UIApplication.shared.keyWindow, let rootViewController = window.rootViewController else { return nil } var topController = rootViewController while let newTopController = topController.presentedViewController { topController = newTopController } return topController } 
updated for Swift3.0 and later versions
Source Link
Saqib Omer
  • 5.5k
  • 7
  • 53
  • 73

I think you need a combination of the accepted answer and @fishstix's

+ (UIViewController*) topMostController { UIViewController *topController = [UIApplication sharedApplication].keyWindow.rootViewController; while (topController.presentedViewController) { topController = topController.presentedViewController; } return topController; } 

Swift3.0+ let rootViewController = UIApplication.shared.keyWindow?.rootViewControllerSwift 3.0+

let rootViewController = UIApplication.shared.keyWindow?.rootViewController 

I think you need a combination of the accepted answer and @fishstix's

+ (UIViewController*) topMostController { UIViewController *topController = [UIApplication sharedApplication].keyWindow.rootViewController; while (topController.presentedViewController) { topController = topController.presentedViewController; } return topController; } 

Swift3.0+ let rootViewController = UIApplication.shared.keyWindow?.rootViewController

I think you need a combination of the accepted answer and @fishstix's

+ (UIViewController*) topMostController { UIViewController *topController = [UIApplication sharedApplication].keyWindow.rootViewController; while (topController.presentedViewController) { topController = topController.presentedViewController; } return topController; } 

Swift 3.0+

let rootViewController = UIApplication.shared.keyWindow?.rootViewController 

I think you need a combination of the accepted answer and @fishstix's

+ (UIViewController*) topMostController { UIViewController *topController = [UIApplication sharedApplication].keyWindow.rootViewController; while (topController.presentedViewController) { topController = topController.presentedViewController; } return topController; } 

Swift3.0+ let rootViewController = UIApplication.shared.keyWindow?.rootViewController

I think you need a combination of the accepted answer and @fishstix's

+ (UIViewController*) topMostController { UIViewController *topController = [UIApplication sharedApplication].keyWindow.rootViewController; while (topController.presentedViewController) { topController = topController.presentedViewController; } return topController; } 

I think you need a combination of the accepted answer and @fishstix's

+ (UIViewController*) topMostController { UIViewController *topController = [UIApplication sharedApplication].keyWindow.rootViewController; while (topController.presentedViewController) { topController = topController.presentedViewController; } return topController; } 

Swift3.0+ let rootViewController = UIApplication.shared.keyWindow?.rootViewController

Source Link
Eric
  • 7.9k
  • 5
  • 23
  • 36
Loading