我刚刚用ViewController类创建了一个单视图应用程序项目。我想显示一个位于我自己的类中的函数的UIAlertController。
这是我的课程,带有警告。
class AlertController: UIViewController { func showAlert() { var alert = UIAlertController(title: "abc", message: "def", preferredStyle: .Alert) self.presentViewController(alert, animated: true, completion: nil) } }
这是执行警报的ViewController。
class ViewController: UIViewController { override func viewDidLoad() { super.viewDidLoad() } @IBAction func showAlertButton(sender: AnyObject) { var alert = AlertController() alert.showAlert() } }
这是我得到的,而不是优美的警报。
警告:尝试在Sprint1.AlertController:0x797cc500上显示其视图不在窗口层次结构中的UIAlertController:0x797d2d20!
我该怎么办?
如果UIAlertController要从模态控制器实例化,则需要在viewDidAppear中而不是在中进行,viewDidLoad否则会出现错误。
UIAlertController
viewDidAppear
viewDidLoad
这是我的代码(Swift 4):
override func viewDidAppear(_ animated: Bool) { super.viewDidAppear(animated) let alertController = UIAlertController(title: "Foo", message: "Bar", preferredStyle: .alert) alertController.addAction(UIAlertAction(title: "OK", style: .cancel, handler: nil)) present(alertController, animated: true, completion: nil) }