我试图显示两个UIAlertController实例连续,这就像下面的代码块一样。
func showAlerts() {
let alertA = UIAlertController(title: "Alert A", message: "This is alert a...", preferredStyle: .alert)
let alertB = UIAlertController(title: "Alert B", message: "This is alert b...", preferredStyle: .alert)
let alertButton1 = UIAlertAction(title: "OK", style: .default, handler: nil)
let alertButton2 = UIAlertAction(title: "Cancel", style: .cancel, handler: nil)
alertA.addAction(alertButton1)
alertA.addAction(alertButton2)
alertB.addAction(alertButton1)
alertB.addAction(alertButton2)
self.present(alertA, animated: true) {
self.present(alertB, animated: true, completion: {
debugPrint("alerts are all shown")
})
}
}
我希望此代码能够持续显示每个警报,这意味着alertB
会在alertA
之后显示。但alertB
并没有像我预期的那样出现,并在控制台上发出警告;
Warning: Attempt to present <UIAlertController: 0x7f7ffde0ace0> on <ContinuousUIAlertController_Experiment.ViewController: 0x7f7ffdd092d0> which is already presenting <UIAlertController: 0x7f7ffde09f90>
如果我没记错的话,多个UIAlertController对象不能同时存在。所以我以某种方式理解上面的警告。
那么,那么,如何实现使用UIViewController::present(_:animated:completion:)
完成或具有几乎相同逻辑的连续警报? (我不想使用UIAlertAction的处理程序)
如果有解决方案,请告诉我 我已经在这个问题上挣扎了几天而我还没有解决..
谢谢,
答案 0 :(得分:0)
您无法在1时间显示2个uialettcontrol。
但你可以在第一个uialeraction上显示第二个uialettcontrol。
例如
let alertController = UIAlertController(title: "iOScreator", message:
"Hello, world!", preferredStyle: UIAlertControllerStyle.Alert)
alertController.addAction(UIAlertAction(title: "Dismiss", style: UIAlertActionStyle.Destructive,handler: { action in
self.pressed()
}))
func pressed()
{
print("you pressed")
}
在按下的事件中,您可以为第二个uialettcontrol编写代码。
希望这会对你有所帮助。
有一个快乐的编码。