无法在 swift 中弹出警报

Trouble getting alert to pop up in swift

这个函数在我的viewDidLoad中被调用。它没有出错,但什么也没有发生。它肯定会被调用,因为我告诉它打印并且它起作用了。

这是警报代码:

func makeAlert()
    {
        let alertController = UIAlertController(title: "Title", message: "Message", preferredStyle: UIAlertControllerStyle.Alert)
        // Create the actions
        let okAction = UIAlertAction(title: "OK", style: UIAlertActionStyle.Default) {
        UIAlertAction in
        NSLog("OK Pressed")
        }
        let cancelAction = UIAlertAction(title: "Cancel", style: UIAlertActionStyle.Cancel) {
        UIAlertAction in
        NSLog("Cancel Pressed")
        }
        // Add the actions
        alertController.addAction(okAction)
        alertController.addAction(cancelAction)
        // Present the controller
        self.presentViewController(alertController, animated: true, completion: nil)

这里的问题是您试图在呈现视图控制器(带有您的 viewDidLoad 的视图控制器)显示在屏幕上之前显示您的 alertControllerviewDidLoad() 在您的视图控制器加载到内存后调用,不一定在其视图位于视图层次结构中时调用。

因此,在viewDidAppear(_:)中调用makeAlert():

override func viewDidAppear(animated: Bool) {
    makeAlert()
}

这确保您的视图控制器已经显示并且能够呈现您的 alertController

在此处阅读有关 viewDidLoad()viewDidAppear(_:) 的内容很有帮助: https://developer.apple.com/library/ios/documentation/UIKit/Reference/UIViewController_Class/index.html#//apple_ref/occ/instm/UIViewController/