From 2ba85ba4c677f034c7c485ce125d3d938ce79946 Mon Sep 17 00:00:00 2001 From: Goktug Yilmaz Date: Sun, 22 Nov 2015 21:28:57 -0800 Subject: [PATCH] -Fixed app delegate bug --- EZLoadingActivity.swift | 22 ++++++++++++---------- EZLoadingActivity/ViewController.swift | 6 +++++- 2 files changed, 17 insertions(+), 11 deletions(-) diff --git a/EZLoadingActivity.swift b/EZLoadingActivity.swift index a6948d5..ef89aa0 100644 --- a/EZLoadingActivity.swift +++ b/EZLoadingActivity.swift @@ -46,6 +46,11 @@ struct EZLoadingActivity { return false } + guard topMostController != nil else { + print("EZLoadingActivity Error: You don't have any views set. You may be calling them in viewDidLoad. Try viewDidAppear instead.") + return false + } + instance = LoadingActivity(text: text, disableUI: disableUI) return true } @@ -120,7 +125,7 @@ struct EZLoadingActivity { addSubview(activityView) addSubview(textLabel) - UIApplication.topMostController().view.addSubview(self) + topMostController!.view.addSubview(self) if disableUI { UIApplication.sharedApplication().beginIgnoringInteractionEvents() @@ -248,15 +253,12 @@ private extension UIScreen { } } -private extension UIApplication { - class func topMostController() -> UIViewController { - let appDelegate = UIApplication.sharedApplication().delegate as! AppDelegate - var topController = appDelegate.window!.rootViewController - - while topController?.presentedViewController != nil { - topController = topController?.presentedViewController - } - return topController! +private var topMostController: UIViewController? { + var presentedVC = UIApplication.sharedApplication().keyWindow?.rootViewController + while let pVC = presentedVC?.presentedViewController { + presentedVC = pVC } + + return presentedVC } diff --git a/EZLoadingActivity/ViewController.swift b/EZLoadingActivity/ViewController.swift index 605f446..4356687 100644 --- a/EZLoadingActivity/ViewController.swift +++ b/EZLoadingActivity/ViewController.swift @@ -14,9 +14,13 @@ class ViewController: UIViewController { super.viewDidLoad() // Do any additional setup after loading the view, typically from a nib. - EZLoadingActivity.showWithDelay("Testing..", disableUI: false, seconds: 3) } + override func viewDidAppear(animated: Bool) { + super.viewDidAppear(animated) + EZLoadingActivity.showWithDelay("Testing..", disableUI: false, seconds: 3) + + } override func didReceiveMemoryWarning() { super.didReceiveMemoryWarning() // Dispose of any resources that can be recreated.