我将在加载视图控制器后立即显示此警报控制器设置。但是,它不会出现。 我相信我涵盖了所有方面-标题,消息,警报样式,操作按钮和提示...但仍然没有出现。 不确定我缺少什么。
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)
答案 0 :(得分:3)
尝试在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
}
}
答案 1 :(得分:0)
您需要在主线程上执行该操作:
DispatchQueue.main.async {
present(alert, animated: true, completion: nil)
}
其背后的原因是,viewDidLoad
完成后将设置视图控制器的层次结构。因此,通过执行此操作,您可以将警报在主线程上的显示调度到主线程从执行viewDidLoad
开始完成的时间。