从第一个UIAlertController打开第二个UIAlertController

时间:2018-06-13 04:14:31

标签: ios swift uialertcontroller

我们怎样才能在第一次警报中打开第二个UIAlert?

第一个代码块工作正常,显示警报。但我希望能够调用第二个警报视图,如果选择了第一个警报中的一个选项,则会显示该视图。

在下面的例子中,xcode并不喜欢使用" self"正在调用第二个警报的地方,我不知道如何设置它。

带有白色感叹号的红色错误是"使用未解析的标识符' 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)
}

1 个答案:

答案 0 :(得分:2)

你有两个错误,

第一个,您需要在UIAlertAtroller名称中以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)
}