无法在 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 的视图控制器)显示在屏幕上之前显示您的 alertController。 viewDidLoad()
在您的视图控制器加载到内存后调用,不一定在其视图位于视图层次结构中时调用。
因此,在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/
这个函数在我的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 的视图控制器)显示在屏幕上之前显示您的 alertController。 viewDidLoad()
在您的视图控制器加载到内存后调用,不一定在其视图位于视图层次结构中时调用。
因此,在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/