多个 UIAlertController 在 Swift 中一个接一个地显示

Multiple UIAlertControllers to show one after the other in Swift

我已经为我的应用程序设置了一个警报控制器,它的工作方式是如果部分分数高于 10,你会收到 ui 警报。

现在我的问题是,如果我有 2 或 3 个部分超过 10 个部分,我只会显示第一个 UIalert,我希望一个接一个地看到所有这些部分(如果发生这种情况

这是我的代码:

func SectionAlert () {

    var message1 = NSLocalizedString("Section 1 score is now ", comment: "");
    message1 += "\(section1score)";
    message1 += NSLocalizedString(" please review before continuing", comment: "1");

    var message2 = NSLocalizedString("Section 2 score is now ", comment: "");
    message2 += "\(section2score)";
    message2 += NSLocalizedString(" please review before continuing", comment: "2");

    var message3 = NSLocalizedString("Section 3 score is now ", comment: "");
    message3 += "\(section3score)";
    message3 += NSLocalizedString(" please review before continuing", comment: "3");

    if (section1score >= 10){
        let alertController: UIAlertController = UIAlertController(title: NSLocalizedString("Section 1 score is over 10", comment: ""),
            message: " \(message1)",
            preferredStyle: .Alert)

        let OKAction = UIAlertAction(title: "OK", style: .Default) {
            action -> Void in }

        alertController.addAction(OKAction)
        self.presentViewController(alertController, animated: true, completion: nil)

    } else if (section2score >= 10){
        let alertController: UIAlertController = UIAlertController(title: NSLocalizedString("Section 2 Score is over 10", comment: ""),
            message: "\(message2)",
            preferredStyle: .Alert)

        let OKAction = UIAlertAction(title: "OK", style: .Default) {
            action -> Void in }

        alertController.addAction(OKAction)
        self.presentViewController(alertController, animated: true, completion: nil)

    } else if (section3score >= 10){
        let alertController: UIAlertController = UIAlertController(title: NSLocalizedString("Section 3 Score is over 10", comment: ""),
            message: "\(message3)",
            preferredStyle: .Alert)

        let OKAction = UIAlertAction(title: "OK", style: .Default) {
            action -> Void in }

        alertController.addAction(OKAction)
        self.presentViewController(alertController, animated: true, completion: nil)
    }
}

有什么想法吗??

谢谢!

主要问题是您使用的是 else if。第二和第三部分条件将不会被测试,除非前面的条件评估为 false.

所以你想改变这个:

if (section1score >= 10){
    // …
} else if (section2score >= 10){
    // …
} else if (section3score >= 10){
    // …
}

看起来更像这样:

if (section1score >= 10){
    // …
}

if (section2score >= 10){
    // …
}

if (section3score >= 10){
    // …
}

也就是说,您将无法同时显示三个视图控制器。您可能希望更新代码以将消息合并为一个警报。 (与同时出现三个模态警报相比,这将是更好的用户体验。)

好的,我已经弄明白了,我所做的是当我在视图上按确定时将代码设置为 运行,以便它检查其他部分然后弹出另一个部分如果需要。

我把它放在

之后
action -> Void in

非常感谢