gpt4 book ai didi

ios - 当呈现 Controller 为模式时,未调用 UIAlertAction 闭包

转载 作者:行者123 更新时间:2023-11-28 13:25:49 25 4
gpt4 key购买 nike

我有一个 UIViewController,它嵌入在 UINavigationController 中,它以模态方式呈现在我的应用程序的 keyWindow.rootViewController 上。当我在显示的导航 Controller 的任何屏幕中显示 UIAlertController 时,警报 Controller 会正确显示,但任何 UIAlertAction 的闭包在按下后都不会被调用。

我在属于我的应用程序的主导航 Controller 的 View Controller 中显示具有相同代码的相同警报 Controller ,并且正确调用了闭包。

显示警报的代码非常简单,下面是代码片段:

    // Creating Alert
func createAlert() -> UIAlertController {
let actions: [UIAlertAction] = [
UIAlertAction(title: "Something", style: .default, handler: { _ in
self.setOriginalQueue(with: items, description: description, identifier: identifier)
self.setQueue()
}),
UIAlertAction(title: "Cancel", style: .cancel, handler: { _ in
normal()
})
]

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

return alert
}

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

那么问题来了,为什么闭包没有被调用?

最佳答案

UIAlertController 不包含四种类型的参数。查看document .

一旦你修复了它,其余的将自动修复,如下所示。

为了大家方便,我把整个模态视图 Controller 类的源码放在这里。

class ModalViewController: UIViewController {

override func viewDidLoad() {
super.viewDidLoad()
}

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

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

func createAlert() -> UIAlertController {

let actions: [UIAlertAction] = [
UIAlertAction(title: "Something", style: .default, handler: { _ in
print("Something")
}),
UIAlertAction(title: "Cancel", style: .cancel, handler: { _ in
print("Cancel")
})
]
let alert = UIAlertController(title: "Title", message: "Message", preferredStyle: .actionSheet)

for action in actions {
alert.addAction(action)
}

return alert
}
}

关于ios - 当呈现 Controller 为模式时,未调用 UIAlertAction 闭包,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/58375520/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com