Откройте второй UIAlertController из первого UIAlertController - PullRequest
0 голосов
/ 13 июня 2018

Как мы можем открыть второй 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 голосов
/ 13 июня 2018

У вас было две ошибки,

первая, вам нужно представить второе предупреждение в имени UIAlertController, а не в имени UIAlertAction

 self.present(secondAlert, animated: true)

не имя метода alert2

self.present(alert2, animated: true)

второй, вам нужно вызвать первый обработчик предупреждений alertController метод UIAlertAction, например alert2 not alert2 ()

 firstAlert.addAction(UIAlertAction(title: "Option A", style: .default, handler: alert2 ))

fullответ

 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)
}
...