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