在 Swift 4 中显示和关闭 UIAlertController

用户123456

我为 UIAlertViewController 声明了一个全局变量,以便我能够在我的类中以不同的方法显示和关闭它。我显示了两种警报​​:第一,带有按钮的警报,当遇到错误时会显示或显示信息消息。第二个是没有按钮的警报,它将像进度消息一样显示。

这是示例代码:

private var alert: UIAlertController? // global declaration

private func showProgressMessage(sender viewController: UIViewController, message alertMessage: String)
{
    DispatchQueue.main.async
    {
        self.alert= UIAlertController(title: "", message: alertMessage, preferredStyle: .alert)
        viewController.present(self.alert!, animated: true, completion: nil)
    }
}

private func showAlertMessage(sender viewController: UIViewController, title alertTitle: String, message alertMessage: String)
{
    DispatchQueue.main.async
    {
        self.alert= UIAlertController(title: alertTitle, message: alertMessage, preferredStyle: .alert)

        self.alert!.addAction(UIAlertAction(title: "OK", style: .default, handler: nil))
        viewController.present(self.alert!, animated: true, completion: nil)
    }
}

private func method1()
{
    DispatchQueue.global().async
    {
        // some code here
        self.showProgressMessage(sender: self, message:  "Processing...")
        // some code here
    }
}

private func method2()
{
    // some code here
    self.alert!.dismiss(animated: false)
    {
        self.showAlertMessage(sender: self, message:  "Done")
    }

    self.displayOtherViewController()
}

private func displayOtherViewController()
{
    self.alert?.dismiss(animated: false)
    {
        if let viewController = self.storyboard?.instantiateViewController(withIdentifier: "Sample")
        {
            let view = viewController as! SampleViewController

            view .modalTransitionStyle = .crossDissolve

            self.present(view , animated: true, completion: nil)
        }
    }
}

在方法2中,再次显示警报需要几秒钟才能显示,与视图控制器相同。在 Swift 4 中显示和关闭 UIAlertController 的正确方法是什么?

马丁·普鲁萨

似乎您的代码是从后台线程启动的。甚至必须在主线程上调用dismiss试试这个:

private func method2() {
    DispatchQueue.main.async {
        self.alert!.dismiss(animated: false) {
            self.showAlertMessage(sender: self, message:  "Done")
        }
        self.displayOtherViewController()
    }
}

本文收集自互联网,转载请注明来源。

如有侵权,请联系[email protected] 删除。

编辑于
0

我来说两句

0条评论
登录后参与评论

相关文章

来自分类Dev

简单的App Delegate方法来显示UIAlertController(在Swift中)

来自分类Dev

在Swift中使用UIAlertController更改警报的标题和消息字体

来自分类Dev

在SWIFT中为UIAlertController设置标签?

来自分类Dev

iOS / Swift测试UIAlertController / UIAlertView

来自分类Dev

UIAlertcontroller作为Swift中的动作

来自分类Dev

UiAlertView或UiAlertController在Swift中仅显示一次

来自分类Dev

在Swift中为UIAlertController设置背景颜色

来自分类Dev

在Swift中显示UIAlertcontroller时,KEEP键盘保持打开状态吗?

来自分类Dev

在UIAlertController外部点击时如何关闭UIAlertController?

来自分类Dev

在GameScene中显示UIAlertController(SpriteKit / Swift)

来自分类Dev

Swift:在didReceiveLocalNotification方法中显示UIAlertController

来自分类Dev

UIAlertController将不会显示-在Swift中

来自分类Dev

如何从Swift中的UIAlertController删除UIAlertAction?

来自分类Dev

如何在全局Swift中创建uialertcontroller

来自分类Dev

在Swift 3.0中从异步线程调用UIAlertController

来自分类Dev

如何在Swift中旋转UIAlertController

来自分类Dev

SWIFT-显示后如何更改UIAlertController消息

来自分类Dev

UIAlertcontroller作为Swift中的动作

来自分类Dev

Swift-TVOS取消UIAlertController

来自分类Dev

警告-尝试在Swift中显示UIAlertController null

来自分类Dev

Swift-IOS:UIalertController位置

来自分类Dev

Swift UIAlertController背景色

来自分类Dev

无法在Swift中的UITableViewController中呈现UIAlertController

来自分类Dev

Swift - 在扩展函数中显示 UIAlertController

来自分类Dev

ios 10+,Swift 3+ - 无法从 Singleton 实例中关闭 UIAlertController

来自分类Dev

在 swift 4 中显示和关闭视图控制器

来自分类Dev

在 Swift 中点击返回键时,如何关闭 UIAlertController?

来自分类Dev

Swift 4 UIAlertController 如何将不同的动作组合成 1 个完成处理程序?

来自分类Dev

暂停循环直到在 Swift 中获得 UIAlertController 的响应

Related 相关文章

  1. 1

    简单的App Delegate方法来显示UIAlertController(在Swift中)

  2. 2

    在Swift中使用UIAlertController更改警报的标题和消息字体

  3. 3

    在SWIFT中为UIAlertController设置标签?

  4. 4

    iOS / Swift测试UIAlertController / UIAlertView

  5. 5

    UIAlertcontroller作为Swift中的动作

  6. 6

    UiAlertView或UiAlertController在Swift中仅显示一次

  7. 7

    在Swift中为UIAlertController设置背景颜色

  8. 8

    在Swift中显示UIAlertcontroller时,KEEP键盘保持打开状态吗?

  9. 9

    在UIAlertController外部点击时如何关闭UIAlertController?

  10. 10

    在GameScene中显示UIAlertController(SpriteKit / Swift)

  11. 11

    Swift:在didReceiveLocalNotification方法中显示UIAlertController

  12. 12

    UIAlertController将不会显示-在Swift中

  13. 13

    如何从Swift中的UIAlertController删除UIAlertAction?

  14. 14

    如何在全局Swift中创建uialertcontroller

  15. 15

    在Swift 3.0中从异步线程调用UIAlertController

  16. 16

    如何在Swift中旋转UIAlertController

  17. 17

    SWIFT-显示后如何更改UIAlertController消息

  18. 18

    UIAlertcontroller作为Swift中的动作

  19. 19

    Swift-TVOS取消UIAlertController

  20. 20

    警告-尝试在Swift中显示UIAlertController null

  21. 21

    Swift-IOS:UIalertController位置

  22. 22

    Swift UIAlertController背景色

  23. 23

    无法在Swift中的UITableViewController中呈现UIAlertController

  24. 24

    Swift - 在扩展函数中显示 UIAlertController

  25. 25

    ios 10+,Swift 3+ - 无法从 Singleton 实例中关闭 UIAlertController

  26. 26

    在 swift 4 中显示和关闭视图控制器

  27. 27

    在 Swift 中点击返回键时,如何关闭 UIAlertController?

  28. 28

    Swift 4 UIAlertController 如何将不同的动作组合成 1 个完成处理程序?

  29. 29

    暂停循环直到在 Swift 中获得 UIAlertController 的响应

热门标签

归档