繁体   English   中英

UIAlertController已完成并已呈现,但在viewDidLoad期间未出现

[英]UIAlertController is complete and presented but does not appear during viewDidLoad

我有此警报控制器设置,可在加载视图控制器后立即显示。 但是,它不会出现。 我相信我涵盖了所有方面-标题,消息,警报样式,操作按钮和提示...但仍然没有出现。 不确定我缺少什么。

  let array = quoteBank()

    print(array.sarcasticQuotes[0].quote)


    let title = "Message"
    let message = array.sarcasticQuotes[0].quote

    let alert = UIAlertController(title: title, message: message, preferredStyle: .alert)

    alert.addAction(.init(title: "OK", style: .default, handler: nil))
   present(alert, animated: true, completion: nil)

尝试在viewDidLoad显示警报为时过早。 视图控制器尚未显示。 使用viewDidAppear

override func viewDidAppear(_ animated: Bool) {
    super.viewDidAppear(animated)

    // Use this if statement to only show the alert once
    if self.isBeingPresented || self.isMovingToParentViewController {
        // show your alert here
    }
}

您需要在主线程上执行该操作:

DispatchQueue.main.async {
    present(alert, animated: true, completion: nil)
}

其背后的原因是,在viewDidLoad完成后将设置视图控制器的层次结构。 因此,通过执行此操作,您可以将警报在主线程上的显示调度到主线程从执行viewDidLoad到完成的时间。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM