如何在 UIAlertAction 中传递多个处理程序

How to pass multiple handlers in UIAlertAction

我有几个按钮,点击这些按钮会显示相同的警报。我必须分别处理每个按钮的点击,因此我需要将不同的处理程序传递给这些警报中的每一个。我该怎么做?

我已经搜索了解决方案,但找不到我要找的东西,或者可能有但我无法理解。

以下是我的代码片段。在此函数中,我可以获取单击了哪个按钮,但我无法弄清楚如何调用不同的处理程序并传递它们 alert.title。

我希望有人能指出我正确的方向。

@IBAction func buttonClicked(_ sender: UIButton) {

    let alert = UIAlertController(title: "Select Value", message: nil, preferredStyle: .actionSheet)

    for list in self.listValue {
        alert.addAction(UIAlertAction(title: list.value, style: .default, handler: { _ in

            // How do I call different handlers here?
            // I'll need to retrieve alert.title in these handlers

        }))
    }

    alert.addAction(UIAlertAction(title: "Cancel", style: UIAlertAction.Style.cancel, handler: nil))
    self.present(alert, animated: false, completion: nil)
}

不是很清楚你在问什么,但如果你想弄清楚按下了哪个按钮,以便你可以为每个按钮执行不同的方法,你可以这样做:

@IBAction func buttonClicked(_ sender: UIButton) {
    let alert = UIAlertController(title: "Select Value", message: nil, preferredStyle: .actionSheet)
    for list in self.listValue {
        alert.addAction(UIAlertAction(title: list.value, style: .default, handler: { (action) in
            // How do I call different handlers here?
            // I'll need to retrieve alert.title in these handlers
            switch action.title {
            case "Value A":
                print("It's Value A")
            case "Value B":
                print("It's Value B")
            default:
                print("We didn't implement anything for this value")
            }
        }))
    }
    alert.addAction(UIAlertAction(title: "Cancel", style: UIAlertAction.Style.cancel, handler: nil))
    self.present(alert, animated: false, completion: nil)
}