无法获得警报以迅速弹出

时间:2016-08-04 05:16:33

标签: ios swift xcode action alert

此功能在我的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)

1 个答案:

答案 0 :(得分:1)

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

因此,请在makeAlert()中致电viewDidAppear(_:)

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/