Вложенная функция обратного вызова не работает должным образом Swift - PullRequest
0 голосов
/ 24 ноября 2018

Я пытаюсь реализовать вложенные обработчики завершения, но по какой-то причине мой второй обработчик не запускается после завершения.Вот как выглядит код:

//User presses a button on a cell. Code is in `cellForRowAtIndex...`
 cell.callback = {
            print("in CFRAIP")
            self.showPopUpDialog(completionHandler: { () -> Void in 
                print("AfterPOPUPDIALOG")
                self.requestBookingWithCompletionHandler(fetchBookingForDate: self.currentDate, row: indexPath.row)
            })
        }


func showPopUpDialog(completionHandler: () -> Void ){

    print("In show PopUPdialog")

    let alertController = UIAlertController(title: "Uppgifter", message: "Skriv in namn och telefonnummer", preferredStyle: .alert)

    let confirmAction = UIAlertAction(title: "Boka", style: .default) { (_) in

        //getting the input values from user
        self.bokadNamn = (alertController.textFields?[0].text)!
        self.bokadTelefon = (alertController.textFields?[1].text)!

        print("pressed ok in popup")
    }

    let cancelAction = UIAlertAction(title: "Avbryt", style: .cancel) { (_) in}

    //adding textfields to our dialog box
    alertController.addTextField { (textField) in
    textField.placeholder = "Namn"
    textField.layer.cornerRadius = 5
    }
    alertController.addTextField { (textField) in
    textField.placeholder = "Telefonnummer"
    }

    alertController.addAction(confirmAction)
    alertController.addAction(cancelAction)

    //finally presenting the dialog box
    self.present(alertController, animated: true, completion: nil)
}

Это распечатки, которые я получаю:

in CFRAIP
In show PopUPdialog
pressed ok in popup

print("AfterPOPUPDIALOG") не запускается, и мой сетевой запрос не выполняется послепользователь нажал ok в PopUP.Я чувствую, что это что-то действительно простое, что мне не хватает, но, к сожалению, я слеп, чтобы увидеть это ...

1 Ответ

0 голосов
/ 24 ноября 2018

Внутри функции func showPopUpDialog(completionHandler: () -> Void ) { вы нигде не вызываете обработчик завершения completionHandler.

Если вы не вызовете обработчик завершения, как будет выполняться оператор вывода print("AfterPOPUPDIALOG")?

Позвоните вашему обработчику завершения completionHandler в соответствующем месте.

...