ios - 从第一个 UIAlertController 打开第二个 UIAlertController
问题描述
我们如何从第一个警报中打开第二个 UIAlert?
第一个代码块工作正常,显示警报。但是,如果选择了第一个警报中的一个选项,我希望能够调用出现的第二个警报视图。
在下面的示例中,xcode 不喜欢在调用第二个警报时使用“self”,我不知道如何设置它。
带有白色感叹号的红色错误是“Use of unresolved identifier 'self'
有任何想法吗?
override func viewDidAppear(_ animated: Bool)
{
super.viewDidAppear(animated)
let firstAlert = UIAlertController(title: "Title", message: "some message", preferredStyle: .alert)
firstAlert.addAction(UIAlertAction(title: "Option A", style: .default, handler: alert2() ))
firstAlert.addAction(UIAlertAction(title: "Option B", style: .default, handler: nil))
firstAlert.addAction(UIAlertAction(title: "Option C", style: .default, handler: nil))
firstAlert.addAction(UIAlertAction(title: "Cancel", style: .cancel, handler: nil))
self.present(firstAlert, animated: true)
}
func alert2(alert: UIAlertAction!) {
//Put second alert code here:
let secondAlert = UIAlertController(title: "Title", message: "some message", preferredStyle: .alert)
secondAlert.addAction(UIAlertAction(title: "Option A", style: .default, handler: nil ))
secondAlert.addAction(UIAlertAction(title: "Option B", style: .default, handler: nil))
secondAlert.addAction(UIAlertAction(title: "Option C", style: .default, handler: nil))
secondAlert.addAction(UIAlertAction(title: "Cancel", style: .cancel, handler: nil))
self.present(alert2, animated: true)
}
解决方案
你有两个错误,
第一个,您需要在 UIAlertController 名称中显示第二个警报,而不是在 UIAlertAction 名称中
self.present(secondAlert, animated: true)
不是方法名alert2
self.present(alert2, animated: true)
第二个,您需要调用第一个 alertcontroller UIAlertAction 完成处理程序方法,如alert2而不是alert2()
firstAlert.addAction(UIAlertAction(title: "Option A", style: .default, handler: alert2 ))
完整答案
override func viewDidAppear(_ animated: Bool)
{
super.viewDidAppear(animated)
let firstAlert = UIAlertController(title: "Title", message: "some message", preferredStyle: .alert)
firstAlert.addAction(UIAlertAction(title: "Option A", style: .default, handler: alert2 ))
firstAlert.addAction(UIAlertAction(title: "Option B", style: .default, handler: nil))
firstAlert.addAction(UIAlertAction(title: "Option C", style: .default, handler: nil))
firstAlert.addAction(UIAlertAction(title: "Cancel", style: .cancel, handler: nil))
self.present(firstAlert, animated: true)
}
func alert2(alert: UIAlertAction!) {
//Put second alert code here:
let secondAlert = UIAlertController(title: "Title", message: "some message", preferredStyle: .alert)
secondAlert.addAction(UIAlertAction(title: "Option A", style: .default, handler: nil ))
secondAlert.addAction(UIAlertAction(title: "Option B", style: .default, handler: nil))
secondAlert.addAction(UIAlertAction(title: "Option C", style: .default, handler: nil))
secondAlert.addAction(UIAlertAction(title: "Cancel", style: .cancel, handler: nil))
self.present(secondAlert, animated: true)
}
推荐阅读
- mongodb - 无法在流星中创建文档集合
- python-3.x - ModuleNotFoundError:没有名为“Python3”的模块
- node.js - 我错误地点击了 cmd,npm install 在已经创建的应用程序中,而不是 npm start。会不会有什么问题?我可以无忧无虑地前进吗?
- javascript - 即使在对键进行迭代时,从数组对象中删除值也会修改整个对象
- java - 如何停止从 TextWriter 中截断尾随 0?
- c# - 如果是 google drive v3,如何获取 v2 About.LargestChangeId?
- c# - 如何在 C# 中删除 TableView 中的行时从右到左单元格设置动画
- r - 尝试读取 CSV 文件
- excel - 由于这条线,Vba 没有运行所有线
- mybatis - where 标签在只有第一个生效的地方