首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >如果存在多个推送的AlertView,则Swift仅显示一个AlertView

如果存在多个推送的AlertView,则Swift仅显示一个AlertView
EN

Stack Overflow用户
提问于 2016-02-02 10:30:53
回答 1查看 676关注 0票数 2

如果我在一个控制器上有多个AlertView,如果它们都被分别触发,如何让它只显示最后一个AlertView?请看下面的代码:

代码语言:javascript
复制
override func viewDidLoad() {
    super.viewDidLoad()

    self.getAPI1()
    self.getAPI2()
    self.getAPI3()
}

func getAPI1() {
    do {
         // try ... Get API Process
    } catch {
         let alertView = UIAlertView(title: "ERROR", message: "There is an error on getAPI1()", delegate: nil, cancelButtonTitle: "OK")
         alertView.show()
    }
}

func getAPI2() {
    do {
         // try ... Get API Process
    } catch {
         let alertView = UIAlertView(title: "ERROR", message: "There is an error on getAPI2()", delegate: nil, cancelButtonTitle: "OK")
         alertView.show()
    }
}

func getAPI3() {
    do {
         // try ... Get API Process
    } catch {
         let alertView = UIAlertView(title: "ERROR", message: "There is an error on getAPI3()", delegate: nil, cancelButtonTitle: "OK")
         alertView.show()
    }
}

由于getAPI1、getAPI2和getAPI3无论哪一个出错都需要执行,如何只显示最后一个AlertView?谢谢。

EN

回答 1

Stack Overflow用户

发布于 2016-02-02 10:49:47

您可以使用一个变量来存储当前处于活动和显示状态的警报。

代码语言:javascript
复制
var activeAlert : UIAlertView! = nil

每次显示警报时,请检查之前是否显示了任何警报。你可以像这样检查它

代码语言:javascript
复制
if nil != activeAlert {
    activeAlert.dismissWithClickedButtonIndex(-1, animated: false)
    //show your new alert here
}

这样可以确保总是显示最后一个警报。确保您正在实现UIAlertViewDelegate协议的alertView:clickedButtonAtIndex:方法。此外,iOS 9.0已弃用UIAlertView,因此我建议您改用UIAlertViewController

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/35144042

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档