如何在 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)
}
我有几个按钮,点击这些按钮会显示相同的警报。我必须分别处理每个按钮的点击,因此我需要将不同的处理程序传递给这些警报中的每一个。我该怎么做?
我已经搜索了解决方案,但找不到我要找的东西,或者可能有但我无法理解。
以下是我的代码片段。在此函数中,我可以获取单击了哪个按钮,但我无法弄清楚如何调用不同的处理程序并传递它们 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)
}