使用完成块连续显示两个UIAlertController对象

时间:2017-02-05 17:09:37

标签: ios swift uialertcontroller

我试图显示两个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的处理程序)

如果有解决方案,请告诉我 我已经在这个问题上挣扎了几天而我还没有解决..

谢谢,

1 个答案:

答案 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编写代码。

希望这会对你有所帮助。

有一个快乐的编码。