Так что идея состоит в том, чтобы сделать создателя оповещений общего назначения, чтобы я мог передать обработчик завершения ....
static func makeTextFieldAlert(msg:String, title:String, onOk: @escaping (_ newText:String) -> Void ) -> UIAlertController {
let alertController = UIAlertController(title: "Add New Name", message: "", preferredStyle: UIAlertController.Style.alert)
let saveAction = UIAlertAction(title: "Save", style: UIAlertAction.Style.default, handler: { alert -> Void in
let firstTextField = alertController.textFields![0] as UITextField
onOk(firstTextField.text!)
})
Однако ..... xcode заставляет меня поместить туда _ иэто заставляет меня поместить туда @escaping ....
И .... когда я пытаюсь вызвать весь этот беспорядок ... Он даже не скомпилируется:
@IBAction func click(_ sender: Any) {
print("here")
let newThing:UIAlertController = Util.makeTextFieldAlert(msg: "Yes", title: "Create Thing", onOk:{_ in
ThingUtil.createThing(thing: newText)
} )
Поэтому я пробую $ 0 вместо newText
и получаю
«Невозможно использовать анонимные аргументы замыкания внутри замыкания с явными аргументами»
И я пытаюсьчто у меня есть выше, и я получаю:
Использование неразрешенного идентификатора 'newText'
Я бы предпочел просто использовать переменную newText для ясности ....но на данный момент, я просто хочу его скомпилировать.Что я делаю неправильно?Спасибо!