在呈现新的UIAlertViewController之前解雇旧的UIAlertViewController

时间:2016-04-29 08:19:23

标签: ios swift uialertcontroller

  

我是swift的新手,我想解除现有的警报   当新警报到来时屏幕。

我试过了:

    func showDefaultAlert(controller: UIViewController, title: String, message: String) {

    // create the alert
    let alert = UIAlertController(title: title, message: message, preferredStyle: UIAlertControllerStyle.Alert)

    // add an action (button)
    alert.addAction(UIAlertAction(title: defaultTextForNormalAlertButton, style: UIAlertActionStyle.Default, handler: nil))

    // show the alert
    //controller.presentViewController(alert, animated: true, completion: nil)

    self.showAlert(controller, alert: alert)

}

func showAlert(controller: UIViewController, alert: UIAlertController) {

        if let currentPresentedViewController = UIApplication.sharedApplication().keyWindow?.rootViewController?.presentedViewController {
            if currentPresentedViewController.isKindOfClass(UIAlertController) {
                currentPresentedViewController.dismissViewControllerAnimated(false, completion: {
                    controller.presentViewController(alert, animated: true, completion: nil)
                })
            }else {

                controller.presentViewController(alert, animated: true, completion: nil)
            }
        }
    }
 }



// Call to above method in view controller class:

SPSwiftAlert.sharedObject.showDefaultAlert(self, title:"Title1", message1: "Message")

SPSwiftAlert.sharedObject.showDefaultAlert(self, title:"Title2", message: "Message2")

- 但上面的代码给出了运行时错误:

 Attempting to load the view of a view controller while it is deallocating is not allowed and may result in undefined behavior (<UIAlertController: 0x7fceb95dcfb0>)

1 个答案:

答案 0 :(得分:0)

在展示UIAlertController后,您可以查看其可见性如下:

提出UIAlertController

let alerts=UIAlertController(title: "Test", message: "Test", preferredStyle: .Alert)

presentViewController(alerts, animated: true, completion: nil)

检查UIAlertController是否可见:

if (alerts.isViewLoaded()) 
{
        print("Visible")
        //Here you can dismiss the controller
        //dismissViewControllerAnimated(true, completion: nil)
}

查看此演示:Source code