UialertController 仅在 var 达到某个值时显示一次

UialertController to show only once when the var hits an certain Value

所以我的应用程序的工作方式是你点击一个单元格,一个 var 值被修改(例如 +1)。我已经弄清楚如何在我的 var 达到某个值 (10) 时弹出 UIalert。但是现在每次我更新 var 时都会弹出警报。我想要它做的是当 var 达到 10 时弹出并在那之后停止

这是代码:

    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)

    } 

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)

    }

设置一个Bool来检查警报是否已经显示。全局创建 Bool 并将其初始设置为 false

var showedAlert = false

func yourFunction() {
    if section1score >= 10 && showedAlert == false {
        // show alert
        showedAlert = true
    }

    if section2score >= 10 && showedAlert == false {
        // show alert
        showedAlert = true
    }
}

Comparison Operators

您可以使用 属性 来跟踪显示警报的时间,这样一旦显示就不会再次显示。

var hasShownAlert: Bool = false

if (section1score >= 10 && !hasShownAlert){
    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)
    hasShownAlert = true
} 

if (section2score >= 10 && !hasShownAlert){
    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)
    hasShownAlert = true
}