为什么我的警报无法执行阻止并且无法消除?

时间:2018-12-16 03:13:56

标签: ios swift uialertcontroller

我使用 UIAlertController 创建警报,并在其中添加一些操作。但是当我触摸它的按钮时,什么都没有改变。 (包括“取消”按钮),所以我只能重新启动此应用程序才能解决此问题。

let alert = UIAlertController(title: “my alert”, message: “some message...”, preferredStyle: .alert)
alert.addAction(UIAlertAction(title: “button1”, style: .default, handler: { (_) in
     print(“button 1 up inside”)
}))
alert.addAction(UIAlertAction(title: “button2”, style: .default, handler: { (_) in
     print(“button 2 up inside”)
}))
alert.addAction(UIAlertAction(title: “cancel”, style: .cancel, handler: { (_) in

}))
self.present(alert, animated: true, completion: nil)

已构建Xcode 10。

2 个答案:

答案 0 :(得分:1)

我在使用Sprite Kit的应用程序中遇到了类似的问题。解决方法如下:

let connectActionSheet = UIAlertController(title: nil, message: nil, preferredStyle: .actionSheet)

connectActionSheet.addAction(UIAlertAction(title: "Button1", style: .default, handler: { (action:UIAlertAction) in

       //Code if this button is pressed
}))

connectActionSheet.addAction(UIAlertAction(title: "Button2", style: .default, handler: { (action:UIAlertAction) in

       //Code if button2 is pressed
}))

connectActionSheet.addAction(UIAlertAction(title: "Cancel", style: .cancel, handler: nil))

let vc = self.view?.window?.rootViewController
if vc?.presentedViewController == nil {
       vc?.present(connectActionSheet, animated: true, completion: nil)
}

最后4行使它起作用。希望对您有帮助。

答案 1 :(得分:-1)

非常感谢!由于这些代码,我的视图控制器无法关闭此警报

override func prepare(for segue: UIStoryboardSegue, sender: Any?) {

}

override func dismiss(animated flag: Bool, completion: (() -> Void)? = nil) {

}