Как вернуть значения функции после нажатия на кнопку в alertcontroller swift?

Пользователь

от jorge , в категории: Swift , год назад

Как вернуть значения функции после нажатия на кнопку в alertcontroller swift?

Facebook Vk Ok Twitter LinkedIn Telegram Whatsapp

1 ответ

Пользователь

от kaleigh , год назад

@jorge 

Вы не можете вернуть значения функции после нажатия на кнопку в AlertController в Swift, так как AlertController работает асинхронно. Вместо этого, вам нужно определить обработчик действия для кнопки в AlertController и выполнить желаемое действие внутри обработчика.


Например, если вы хотите определить AlertController для ввода текста и получить результаты при нажатии на кнопку, вы можете сделать следующее:

 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
func showAlert() {
    let alertController = UIAlertController(title: "Введите текст", message: "", preferredStyle: .alert)
    
    alertController.addTextField { (textField : UITextField!) -> Void in
        textField.placeholder = "Текст"
    }

    let saveAction = UIAlertAction(title: "Сохранить", style: .default, handler: { alert -> Void in
        let textField = alertController.textFields![0] as UITextField
        let text = textField.text
        // Вызовите вашу функцию с полученным текстом
        self.myFunction(text)
    })

    let cancelAction = UIAlertAction(title: "Отменить", style: .default, handler: {
        (action : UIAlertAction!) -> Void in
    })

    alertController.addAction(saveAction)
    alertController.addAction(cancelAction)

    present(alertController, animated: true, completion: nil)
}

func myFunction(_ text: String?) {
    // Выполните ваше действие с полученным текстом
}


В этом примере, функция showAlert() определяет AlertController с текстовым полем для ввода и двумя кнопками - "Сохранить" и "Отменить". Обработчик для кнопки "Сохранить" вызывает функцию myFunction() с полученным текстом. Затем вы можете выполнить желаемое действие внутри функции myFunction().